Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3770)

Unified Diff: build/mac/generate_localizer

Issue 164260: ObjC classes generated by the build and used in Xib files is already getting ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/app/nibs/BookmarkBar.xib » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/mac/generate_localizer
===================================================================
--- build/mac/generate_localizer (revision 23016)
+++ build/mac/generate_localizer (working copy)
@@ -20,52 +20,22 @@
'''// ---------- WARNING ----------
// THIS IS A GENERATED FILE, DO NOT EDIT IT DIRECTLY!
//
+// This header includes the table used by ui_localizer.mm. Nothing else should
+// be including this file.
+//
// Generated by %(generate_localizer)s.
-// Generated from %(xib_file)s.
+// Generated from:
+// %(xib_files)s
//
-#ifndef %(class_name)s_LOCALIZER_H_
-#define %(class_name)s_LOCALIZER_H_
+#ifndef UI_LOCALIZER_TABLE_H_
+#define UI_LOCALIZER_TABLE_H_
-#import "chrome/browser/cocoa/ui_localizer.h"
-
-// A subclass of ChromeUILocalizer that handles localization based on resource
-// constants.
-
-@interface %(class_name)sLocalizer : ChromeUILocalizer
-@end
-
-#endif // %(class_name)s_LOCALIZER_H_
-'''
-
-localizer_template_mm = \
-'''// ---------- WARNING ----------
-// THIS IS A GENERATED FILE, DO NOT EDIT IT DIRECTLY!
-//
-// Generated by '%(generate_localizer)s'.
-// Generated from '%(xib_file)s'.
-//
-
-#import "%(header_name)s"
-
-#include "grit/app_strings.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-
-@implementation %(class_name)sLocalizer
-
-- (NSString *)localizedStringForString:(NSString *)string {
-
- static const ui_localizer::ResourceMap kUIResources[] = {
+static const UILocalizerResourceMap kUIResources[] = {
%(resource_map_list)s };
- static const size_t kUIResourcesSize = arraysize(kUIResources);
+static const size_t kUIResourcesSize = arraysize(kUIResources);
- return ui_localizer::LocalizedStringForKeyFromMapList(string,
- kUIResources,
- kUIResourcesSize);
-}
-
-@end
+#endif // UI_LOCALIZER_TABLE_H_
'''
def xib_localizable_strings(xib_path):
@@ -95,8 +65,8 @@
% (xib_path, generate_localizer, item_value));
return constants_list
-def generate_files_contents(class_name, constants_list, header_name, xib_path):
- """Generates a localizer files contents from the list of constants."""
+def generate_file_contents(constants_list, xib_paths):
+ """Generates the header listing the constants."""
# Bounce through a set to uniq the strings, sort the list, then build the
# values we need from it.
constants_list = sorted(set(constants_list))
@@ -112,15 +82,12 @@
( item, label_id[1:], label_arg_id)
# Assemble the contents from the templates.
values_dict = {
- 'class_name': class_name,
- 'header_name': header_name,
'resource_map_list': constant_list_str,
'generate_localizer': generate_localizer,
- 'xib_file': xib_path,
+ 'xib_files': "\n// ".join(xib_paths),
}
h_file = localizer_template_h % values_dict
- mm_file = localizer_template_mm % values_dict
- return (h_file, mm_file)
+ return h_file
def Main(argv=None):
@@ -128,49 +95,37 @@
generate_localizer = os.path.basename(argv[0])
# Args
- if len(argv) != 4:
- sys.stderr.write('%s:0: error: Expected xib and output file arguments\n' %
+ if len(argv) < 4:
+ sys.stderr.write('%s:0: error: Expected output file and then xibs\n' %
generate_localizer);
return 1
- xib_path, output_h_path, output_mm_path = argv[1:]
+ output_path = argv[1];
+ xib_paths = argv[2:]
- # Run ibtool and convert to something Python can deal with
- plist_string = xib_localizable_strings(xib_path)
- if not plist_string:
- return 2
- plist = plistlib.readPlistFromString(plist_string)
+ full_constants_list = []
+ for xib_path in xib_paths:
+ # Run ibtool and convert to something Python can deal with
+ plist_string = xib_localizable_strings(xib_path)
+ if not plist_string:
+ return 2
+ plist = plistlib.readPlistFromString(plist_string)
- # Extract the resource constant strings
- localizable_strings = plist['com.apple.ibtool.document.localizable-strings']
- constants_list = extract_resource_constants(localizable_strings, xib_path)
- if not constants_list:
- sys.stderr.write("%s:0: warning: %s didn't find any resource strings\n" %
- (xib_path, generate_localizer));
- # Seed constant_list with an entry so things will compile even though the
- # array sould really be empty (array_size in the generated file doesn't
- # like an empty array).
- constants_list.append('^0');
+ # Extract the resource constant strings
+ localizable_strings = plist['com.apple.ibtool.document.localizable-strings']
+ constants_list = extract_resource_constants(localizable_strings, xib_path)
+ if not constants_list:
+ sys.stderr.write("%s:0: warning: %s didn't find any resource strings\n" %
+ (xib_path, generate_localizer));
+ full_constants_list.extend(constants_list)
- # Name the class based on the output file
- class_name = os.path.splitext(os.path.basename(output_h_path))[0]
- suffix = '_localizer'
- if class_name.endswith(suffix):
- class_name = class_name[:-len(suffix)];
- class_name = class_name.replace('_', ' ').title().replace(' ', '');
-
# Generate our file contents
- (h_file_content, mm_file_content) = \
- generate_files_contents(class_name, constants_list,
- os.path.basename(output_h_path),
- xib_path)
+ h_file_content = \
+ generate_file_contents(full_constants_list, xib_paths)
- # Write out the files
- file_fd = open(output_h_path, 'w')
+ # Write out the file
+ file_fd = open(output_path, 'w')
file_fd.write(h_file_content)
file_fd.close()
- file_fd = open(output_mm_path, 'w')
- file_fd.write(mm_file_content)
- file_fd.close()
return 0
« no previous file with comments | « no previous file | chrome/app/nibs/BookmarkBar.xib » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698