class GetTextHaml::Parser

Public Class Methods

init(config) click to toggle source

Sets some preferences to parse Haml files.

  • config: a Hash of the config. It can takes some values below:

    • :extnames: An Array of target files extension. Default is [“.haml”].

# File lib/gettext-haml/parser.rb, line 29
def init(config)
  config.each do |key, value|
    @config[key] = value
  end
end
new(path, options={}) click to toggle source

@param path [String] Haml file path to be parsed @param options [Hash]

# File lib/gettext-haml/parser.rb, line 57
def initialize(path, options={})
  @path = path
  @options = options
end
parse(path, options={}) click to toggle source

Parses Haml file located at `path`.

This is a short cut method. It equals to `new(path, options).parse`.

@return [Array<POEntry>] Extracted messages @see initialize and parse

# File lib/gettext-haml/parser.rb, line 49
def parse(path, options={})
  parser = new(path, options)
  parser.parse
end

Public Instance Methods

parse() click to toggle source

Extracts messages from @path.

@return [Array<POEntry>] Extracted messages

# File lib/gettext-haml/parser.rb, line 65
def parse
  content = IO.read(@path)
  source = Haml::Engine.new(content).precompiled

  encoding = detect_encoding(source) || content.encoding
  source.force_encoding(encoding)

  ruby_parser = GetText::RubyParser.new(@path, @options)
  ruby_parser.parse_source(source)
end

Private Instance Methods

detect_encoding(erb_source) click to toggle source
# File lib/gettext-haml/parser.rb, line 77
def detect_encoding(erb_source)
  if /\A#coding:(.*)\n/ =~ erb_source
    $1
  else
    nil
  end
end