Class: Rosette::Core::Extractor
- Inherits:
-
Object
- Object
- Rosette::Core::Extractor
- Defined in:
- lib/rosette/core/extractor/extractor.rb
Overview
Base class for extractors that extract phrases from source code, eg. Ruby, JavaScript, HAML, etc.
Instance Attribute Summary collapse
-
#config ⇒ Configurator
readonly
The Rosette config to use.
Instance Method Summary collapse
-
#extract_each_from(source_code) {|phrase| ... } ⇒ void, Enumerator
Extracts each translatable phrase from the given source code.
-
#initialize(config = nil) ⇒ Extractor
constructor
Creates a new extractor.
Constructor Details
#initialize(config = nil) ⇒ Extractor
Creates a new extractor.
17 18 19 |
# File 'lib/rosette/core/extractor/extractor.rb', line 17 def initialize(config = nil) @config = config end |
Instance Attribute Details
#config ⇒ Configurator (readonly)
Returns the Rosette config to use.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rosette/core/extractor/extractor.rb', line 11 class Extractor attr_reader :config # Creates a new extractor. # # @param [Configurator] config The Rosette config to use. def initialize(config = nil) @config = config end # Extracts each translatable phrase from the given source code. # Derived classes must implement the +#each_function_call+ method # for this to work. # # @param [String] source_code The source code to extract phrases # from. # @return [void, Enumerator] If passed a block, this method yields # each consecutive phrase found in +source_code+. If no block is # passed, it returns an +Enumerator+. # @yield [phrase] a single extracted phrase. # @yieldparam phrase [Phrase] def extract_each_from(source_code) if block_given? each_function_call(source_code) do |node, line_number| if valid_name?(node) && valid_args?(node) yield make_phrase(get_key(node), (node)), line_number end end else to_enum(__method__, source_code) end end protected def each_function_call(source_code) raise NotImplementedError, "#{__method__} must be implemented by derived classes." end def valid_name?(node) raise NotImplementedError, "#{__method__} must be implemented by derived classes." end def valid_args?(node) raise NotImplementedError, "#{__method__} must be implemented by derived classes." end def get_key(node) raise NotImplementedError, "#{__method__} must be implemented by derived classes." end def (node) nil end def make_phrase(key, = nil, file = nil) Phrase.new(key, , file) end end |
Instance Method Details
#extract_each_from(source_code) {|phrase| ... } ⇒ void, Enumerator
Extracts each translatable phrase from the given source code. Derived classes must implement the #each_function_call method for this to work.
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rosette/core/extractor/extractor.rb', line 32 def extract_each_from(source_code) if block_given? each_function_call(source_code) do |node, line_number| if valid_name?(node) && valid_args?(node) yield make_phrase(get_key(node), (node)), line_number end end else to_enum(__method__, source_code) end end |