Class: ExtractI18n::HTMLExtractor::ErbDocument

Inherits:
Object
  • Object
show all
Defined in:
lib/extract_i18n/html_extractor/erb_document.rb

Constant Summary collapse

ERB_REGEXPS =
[
  TwoWayRegexp.new(/<%=(?<inner_text>.+?)%>/m, /@@=(?<inner_text>[a-z0-9\-\._]+)@@/m),
  TwoWayRegexp.new(/<%#(?<inner_text>.+?)%>/m, /@@#(?<inner_text>[a-z0-9\-\._]+)@@/m),
  TwoWayRegexp.new(/<%(?<inner_text>.+?)%>/m, /@@(?<inner_text>[a-z0-9\-\._]+)@@/m)
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(document, erb_directives) ⇒ ErbDocument

Returns a new instance of ErbDocument.



14
15
16
17
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 14

def initialize(document, erb_directives)
  @document = document
  @erb_directives = erb_directives
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



29
30
31
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 29

def method_missing(name, *args, &block)
  @document.public_send(name, *args, &block) if @document.respond_to? name
end

Instance Attribute Details

#erb_directivesObject (readonly)

Returns the value of attribute erb_directives.



12
13
14
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 12

def erb_directives
  @erb_directives
end

Class Method Details

.parse(filename, verbose: false) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 34

def parse(filename, verbose: false)
  file_content = ''
  File.open(filename) do |file|
    file.read(nil, file_content)
    return parse_string(file_content, verbose: verbose)
  end
end

.parse_string(string, verbose: false) ⇒ Object



42
43
44
45
46
47
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 42

def parse_string(string, verbose: false)
  erb_directives = extract_erb_directives! string
  document = create_document(string)
  log_errors(document.errors, string) if verbose
  ErbDocument.new(document, erb_directives)
end

Instance Method Details

#saveObject



19
20
21
22
23
24
25
26
27
# File 'lib/extract_i18n/html_extractor/erb_document.rb', line 19

def save
  result = @document.to_html(indent: 2, encoding: 'UTF-8')
  ERB_REGEXPS.each do |regexp|
    regexp.inverse_replace!(result) do |string_format, data|
      string_format % { inner_text: erb_directives[data[:inner_text]] }
    end
  end
  result
end