asip-meteor 0.9.2.8 → 0.9.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/meteor.rb +93 -51
- metadata +2 -2
data/lib/meteor.rb
CHANGED
@@ -18,12 +18,12 @@
|
|
18
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
19
19
|
#
|
20
20
|
# @author Yasumasa Ashida
|
21
|
-
# @version 0.9.2.
|
21
|
+
# @version 0.9.2.9
|
22
22
|
#
|
23
23
|
|
24
24
|
module Meteor
|
25
25
|
|
26
|
-
VERSION = "0.9.2.
|
26
|
+
VERSION = "0.9.2.9"
|
27
27
|
|
28
28
|
RUBY_VERSION_1_9_0 = '1.9.0'
|
29
29
|
|
@@ -575,111 +575,153 @@ module Meteor
|
|
575
575
|
#
|
576
576
|
class ParserFactory
|
577
577
|
|
578
|
+
attr_accessor :base_dir
|
579
|
+
|
580
|
+
|
578
581
|
#
|
579
|
-
#
|
580
|
-
#
|
581
|
-
# @param [Array] args 引数配列
|
582
|
-
# @return [Meteor::ParserFactory] パーサファクトリ
|
582
|
+
# イニシャライザ
|
583
|
+
# @params [Array] args 引数配列
|
583
584
|
#
|
584
|
-
def
|
585
|
+
def initialize(*args)
|
585
586
|
case args.length
|
586
|
-
when
|
587
|
-
|
588
|
-
when
|
589
|
-
|
587
|
+
when 0 then
|
588
|
+
initialize_0
|
589
|
+
when 1 then
|
590
|
+
initialize_1(args[0])
|
590
591
|
else
|
591
592
|
raise ArgumentError
|
592
593
|
end
|
593
594
|
end
|
594
595
|
|
595
596
|
#
|
596
|
-
#
|
597
|
+
# イニシャライザ
|
598
|
+
#
|
599
|
+
def initialize_0
|
600
|
+
@cache = Hash.new
|
601
|
+
@base_dir = "."
|
602
|
+
end
|
603
|
+
private :initialize_0
|
604
|
+
|
605
|
+
#
|
606
|
+
# イニシャライザ
|
607
|
+
# @param [String] bs_dir 基準ディレクトリ
|
608
|
+
#
|
609
|
+
def initialize_1(bs_dir)
|
610
|
+
@cache = Hash.new
|
611
|
+
@base_dir = bs_dir
|
612
|
+
end
|
613
|
+
private :initialize_1
|
614
|
+
|
615
|
+
#
|
616
|
+
# パーサをセットする
|
617
|
+
#
|
618
|
+
#
|
619
|
+
def parser(*args)
|
620
|
+
case args.length
|
621
|
+
when 1 then
|
622
|
+
parser_1(args[0])
|
623
|
+
when 3 then
|
624
|
+
parser_3(args[0],args[1],args[2])
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
628
|
+
def parser_1(name)
|
629
|
+
@pif = @cache[name]
|
630
|
+
|
631
|
+
if @pif.instance_of?(Meteor::Core::Html::ParserImpl) then
|
632
|
+
Meteor::Core::Html::ParserImpl.new(@pif)
|
633
|
+
elsif @pif.instance_of?(Meteor::Core::Xhtml::ParserImpl) then
|
634
|
+
Meteor::Core::Xhtml::ParserImpl.new(@pif)
|
635
|
+
elsif @pif.instance_of?(Meteor::Core::Xml::ParserImpl) then
|
636
|
+
Meteor::Core::Xml::ParserImpl.new(@pif)
|
637
|
+
end
|
638
|
+
end
|
639
|
+
private :parser_1
|
640
|
+
|
641
|
+
#
|
642
|
+
# パーサをセットする
|
597
643
|
#
|
598
644
|
# @param [Fixnum] type パーサのタイプ
|
599
|
-
# @param [String]
|
645
|
+
# @param [String] relative_path 相対ファイルパス
|
600
646
|
# @param [String] encoding エンコーディング
|
601
647
|
# @return [Meteor::ParserFactory] パーサファクトリ
|
602
648
|
#
|
603
|
-
def
|
604
|
-
|
649
|
+
def parser_3(type,relative_path,encoding)
|
650
|
+
|
651
|
+
paths = File.split(relative_path)
|
652
|
+
|
653
|
+
if '.'.eql?(paths[0]) then
|
654
|
+
relative_url = File.basename(paths[1],'.*')
|
655
|
+
else
|
656
|
+
relative_url = [paths[0],File.basename(paths[1],'.*')].join("/")
|
657
|
+
end
|
605
658
|
|
606
659
|
case type
|
607
660
|
when Parser::HTML then
|
608
661
|
html = Meteor::Core::Html::ParserImpl.new()
|
609
|
-
html.read(
|
662
|
+
html.read(File.expand_path(relative_path,@base_dir), encoding)
|
610
663
|
html.doc_type = Parser::HTML
|
611
|
-
|
664
|
+
@cache[relative_url] = html
|
612
665
|
when Parser::XHTML then
|
613
666
|
xhtml = Meteor::Core::Xhtml::ParserImpl.new()
|
614
|
-
xhtml.read(
|
667
|
+
xhtml.read(File.expand_path(relative_path,@base_dir), encoding)
|
615
668
|
xhtml.doc_type = Parser::XHTML
|
616
|
-
|
669
|
+
@cache[relative_url] = xhtml
|
617
670
|
when Parser::XML then
|
618
671
|
xml = Meteor::Core::Xml::ParserImpl.new()
|
619
|
-
xml.read(
|
672
|
+
xml.read(File.expand_path(relative_path,@base_dir), encoding)
|
620
673
|
xml.doc_type = Parser::XML
|
621
|
-
|
674
|
+
@cache[relative_url] = xml
|
622
675
|
end
|
623
|
-
|
624
|
-
psf
|
676
|
+
|
625
677
|
end
|
626
|
-
|
678
|
+
private :parser_3
|
627
679
|
|
628
680
|
#
|
629
|
-
#
|
630
|
-
#
|
681
|
+
# パーサをセットする
|
682
|
+
#
|
631
683
|
# @param [Fixnum] type パーサのタイプ
|
684
|
+
# @param [String] relative_url 相対URL
|
632
685
|
# @param [String] document ドキュメント
|
633
686
|
# @return [Meteor::ParserFactory] パーサファクトリ
|
634
687
|
#
|
635
|
-
def
|
636
|
-
psf = ParserFactory.new
|
637
|
-
|
688
|
+
def parser_str(type,relative_url,document)
|
638
689
|
case type
|
639
690
|
when Parser::HTML then
|
640
691
|
html = Meteor::Core::Html::ParserImpl.new()
|
641
692
|
html.parse(document)
|
642
693
|
html.doc_type = Parser::HTML
|
643
|
-
|
694
|
+
@cache[relative_url] = html
|
644
695
|
when Parser::XHTML then
|
645
696
|
xhtml = Meteor::Core::Xhtml::ParserImpl.new()
|
646
697
|
xhtml.parse(document)
|
647
698
|
xhtml.doc_type = Parser::XHTML
|
648
|
-
|
699
|
+
@cache[relative_url] = xhtml
|
649
700
|
when Parser::XML then
|
650
701
|
xml = Meteor::Core::Xml::ParserImpl.new()
|
651
702
|
xml.parse(document)
|
652
703
|
xml.doc_type = Parser::XML
|
653
|
-
|
654
|
-
end
|
655
|
-
|
656
|
-
psf
|
657
|
-
end
|
658
|
-
#protected :build_2
|
704
|
+
@cache[relative_url] = xml
|
705
|
+
end
|
706
|
+
end
|
659
707
|
|
660
708
|
#
|
661
709
|
# パーサをセットする
|
662
|
-
#
|
663
|
-
# @param [Meteor::Parser] パーサ
|
710
|
+
# @param [String] name 名前
|
711
|
+
# @param [Meteor::Parser] pif パーサ
|
664
712
|
#
|
665
|
-
def
|
666
|
-
@
|
713
|
+
def []=(name,pif)
|
714
|
+
@cache[path] = pif
|
667
715
|
end
|
668
716
|
|
669
717
|
#
|
670
718
|
# パーサを取得する
|
671
|
-
#
|
719
|
+
#
|
720
|
+
#
|
672
721
|
# @return [Meteor::Parser] パーサ
|
673
722
|
#
|
674
|
-
def
|
675
|
-
|
676
|
-
if @pif.instance_of?(Meteor::Core::Html::ParserImpl) then
|
677
|
-
Meteor::Core::Html::ParserImpl.new(@pif)
|
678
|
-
elsif @pif.instance_of?(Meteor::Core::Xhtml::ParserImpl) then
|
679
|
-
Meteor::Core::Xhtml::ParserImpl.new(@pif)
|
680
|
-
elsif @pif.instance_of?(Meteor::Core::Xml::ParserImpl) then
|
681
|
-
Meteor::Core::Xml::ParserImpl.new(@pif)
|
682
|
-
end
|
723
|
+
def [](name)
|
724
|
+
self.parser(name)
|
683
725
|
end
|
684
726
|
|
685
727
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asip-meteor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.2.
|
4
|
+
version: 0.9.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- asip
|
@@ -9,7 +9,7 @@ autorequire: meteor
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-12 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|