--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/aknlayoutcompiler/src/Extract.cpp Thu Dec 17 09:14:18 2009 +0200
@@ -0,0 +1,101 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*
+*/
+
+
+// disable "identifier was truncated to '255' characters in the browser information" warning
+#pragma warning (disable:4786)
+#include "Extract.h"
+#include "LayoutCompilerErr.h"
+#include "HtmlParse.h"
+#include "LayoutParse.h"
+#include "LayoutWriter.h"
+#include <fstream>
+#include <iostream>
+
+typedef LayoutProcessArgsErr<LayoutExtract> LayoutExtractArgsErr;
+
+
+int LayoutExtract::Extract(const vector<string>& args)
+ {
+ ParseArgs(args);
+
+ THtmlParseLayout html;
+ ifstream in(iDocName.c_str());
+ if (!in.is_open())
+ throw NotFoundErr(iDocName);
+ cout << "reading html " << iDocName << endl;
+ html.Parse(in);
+ in.close();
+
+ TLayout* layout = &html;
+ TLayParseLayout lay;
+ if (iMergeName.size())
+ {
+ ifstream merge(iMergeName.c_str());
+ if (!merge.is_open())
+ throw NotFoundErr(iDocName);
+ cout << "reading layout " << iMergeName << endl;
+ lay.Parse(merge);
+ merge.close();
+
+ cout << "merging " << iDocName << " into " << iMergeName << endl;
+ lay.Merge(TLayout::KMergeModeMerge, html);
+ layout = &lay;
+ }
+
+ TLayoutWriter writer(*layout, iLayoutName);
+ writer.Write("");
+
+ return 0;
+ }
+
+void LayoutExtract::ParseArgs(const vector<string>& args)
+ {
+ if (args.size() < 4)
+ throw LayoutExtractArgsErr();
+
+ iDocName = args[2];
+
+ int layoutIndex = 3;
+ if (args[3][0] == '-')
+ {
+ if (args[3].size() < 3 || args[3][1] != 'o')
+ throw LayoutExtractArgsErr();
+
+ iMergeName = args[3].substr(2);
+ layoutIndex++;
+ }
+
+ if (args.size() <= layoutIndex)
+ throw LayoutExtractArgsErr();
+
+ iLayoutName = args[layoutIndex];
+ }
+
+void LayoutExtract::ShowHelp(ostream& stream)
+ {
+ stream << endl;
+ stream << "LayoutCompiler extract <docName> [-o<oldLayout>] <layoutName>" << endl;
+ stream << " <docName> is the name of the HTML Layout specification" << endl;
+ stream << " <oldLayout> is an optional layout file which the extracted layout will be" << endl;
+ stream << " merged with" << endl;
+ stream << " <layoutName> is the name of the resulting layout file" << endl;
+ stream << " You can use the same name for <oldLayout> and <layoutName>" << endl;
+ }
+
+// End of File