Class: Meteor::ParserFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/meteor.rb

Overview

Parser Factory Class (パーサファクトリクラス)

Constant Summary

ABST_EXT_NAME =
'.*'
CURRENT_DIR =
'.'
SLASH =
'/'
ENC_UTF8 =
'UTF-8'

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (ParserFactory) initialize - (ParserFactory) initialize(bs_dir) - (ParserFactory) initialize(bs_dir, bs_encoding)

initializer (イニシャライザ)

Overloads:

  • - (ParserFactory) initialize(bs_dir)

    Parameters:

    • bs_dir (String)

      base directory (基準ディレクトリ)

  • - (ParserFactory) initialize(bs_dir, bs_encoding)

    Parameters:

    • bs_dir (String)

      base directory (基準ディレクトリ)

    • bs_encoding (String)

      default character encoding (デフォルトエンコーディング)



724
725
726
727
728
729
730
731
732
733
734
735
# File 'lib/meteor.rb', line 724

def initialize(*args)
  case args.length
    when 0 then
      initialize_0
    when 1 then
      initialize_1(args[0])
    when 2 then
      initialize_2(args[0], args[1])
    else
      raise ArgumentError
  end
end

Instance Attribute Details

- (Object) base_dir

String

base directory (基準ディレクトリ)



712
713
714
# File 'lib/meteor.rb', line 712

def base_dir
  @base_dir
end

- (Object) base_encoding

String

default character encoding (デフォルトエンコーディング)



713
714
715
# File 'lib/meteor.rb', line 713

def base_encoding
  @base_encoding
end

Instance Method Details

- (Meteor::Parser) [](key)

get parser (パーサを取得する)

Parameters:

  • key (String)

    identifier (キー)

Returns:



978
979
980
# File 'lib/meteor.rb', line 978

def [](key)
  self.parser(key)
end

- (Object) []=(key, ps)

set parser (パーサをセットする)

Parameters:

  • key (String)

    identifier (キー)

  • ps (Meteor::Parser)

    parser (パーサ)



969
970
971
# File 'lib/meteor.rb', line 969

def []=(key, ps)
  @cache[key] = ps
end

- (Meteor::RootElement) element(key)

get root element (ルート要素を取得する)

Parameters:

  • key (String)

    identifier (キー)

Returns:



928
929
930
# File 'lib/meteor.rb', line 928

def element(key)
  parser_1(key).root_element
end

- (Object) initialize_2(bs_dir, bs_encoding)

イニシャライザ

Parameters:

  • bs_dir (String)

    base directory (基準ディレクトリ)

  • bs_encoding (String)

    default character encoding (デフォルトエンコーディング)



765
766
767
768
769
# File 'lib/meteor.rb', line 765

def initialize_2(bs_dir, bs_encoding)
  @cache = Hash.new
  @base_dir = bs_dir
  @base_encoding = bs_encoding
end

- (Meteor::Parser) parser(type, relative_path, encoding) - (Meteor::Parser) parser(type, relative_path) - (Meteor::Parser) parser(key)

generate parser (パーサを作成する) generate parser (パーサを作成する) get parser (パーサを取得する)

Parameters:

  • type (Fixnum)

    type of parser (パーサのタイプ)

  • relative_path (String)

    relative file path (相対ファイルパス)

  • encoding (String)

    character encoding (エンコーディング)

  • type (Fixnum)

    type of parser (パーサのタイプ)

  • relative_path (String)

    relative file path (相対ファイルパス)

  • key (String)

    identifier (キー)

Returns:



789
790
791
792
793
794
795
796
797
798
# File 'lib/meteor.rb', line 789

def parser(*args)
  case args.length
    when 1 then
      parser_1(args[0])
    when 2 then
      parser_2(args[0], args[1])
    when 3 then
      parser_3(args[0], args[1], args[2])
  end
end

- (Meteor::Parser) parser_str(type, relative_url, document)

generate parser (パーサを作成する)

Parameters:

  • type (Fixnum)

    type of parser (パーサのタイプ)

  • relative_url (String)

    relative URL (相対URL)

  • document (String)

    document (ドキュメント)

Returns:



939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
# File 'lib/meteor.rb', line 939

def parser_str(type, relative_url, document)
  case type
    when Parser::HTML then
      html = Meteor::Ml::Html::ParserImpl.new()
      html.parse(document)
      @cache[relative_url] = html
    when Parser::XHTML then
      xhtml = Meteor::Ml::Xhtml::ParserImpl.new()
      xhtml.parse(document)
      @cache[relative_url] = xhtml
    when Parser::HTML5 then
      html5 = Meteor::Ml::Html5::ParserImpl.new()
      html5.parse(document)
      @cache[relative_url] = html5
    when Parser::XHTML5 then
      xhtml5 = Meteor::Ml::Xhtml5::ParserImpl.new()
      xhtml5.parse(document)
      @cache[relative_url] = xhtml5
    when Parser::XML then
      xml = Meteor::Ml::Xml::ParserImpl.new()
      xml.parse(document)
      @cache[relative_url] = xml
  end
end