textile2html 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/lib/textile2html.rb CHANGED
@@ -39,34 +39,96 @@ class Textile2Html
39
39
  RedCloth.new(src).to_html
40
40
  end
41
41
 
42
+ EXTENSIONS = {
43
+ :textile => %w[textile],
44
+ :html_template => %w[html.erb],
45
+ :css_template => %w[css.erb],
46
+ :text => %w[html css],
47
+ :image => %w[png jpg gif icon],
48
+ }
49
+ EXTENSION_PATTERNS = EXTENSIONS.inject({}) do |dest, (t, exts)|
50
+ key = Regexp.union( exts.map{|ext| /\.#{Regexp.escape(ext)}\Z/i} )
51
+ dest[key] = t
52
+ dest
53
+ end
54
+
42
55
  def execute
43
- src_dir = File.expand_path(options[:src_dir])
44
- src_files = Dir["#{src_dir}/**/*.textile"]
56
+ @layout_erb = ERB.new(File.read(options[:layout]))
57
+ @src_dir = File.expand_path(options[:src_dir])
58
+ src_files = Dir["#{@src_dir}/**/*.*"]
45
59
  src_files.each do |src_file|
46
- src = File.read(src_file)
47
- html_body = RedCloth.new(src).to_html
48
-
49
- html_body, links = pickup_headers(html_body)
50
-
51
- b = binding_for_yield do|*args|
52
- arg = args.first
53
- case arg
54
- when nil then html_body
55
- when :page_outline then build_page_outlines(links)
56
- else
57
- nil
60
+ EXTENSION_PATTERNS.each do |pattern, ext_type|
61
+ if src_file =~ pattern
62
+ @src_path = src_file
63
+ @rel_path = src_file.sub(/^#{Regexp.escape(@src_dir)}\//, '')
64
+ @rel_path_depth = @rel_path.split(/\//).length - 1
65
+ puts "processing: #{src_file}"
66
+ send("process_#{ext_type}", src_file)
67
+ break
58
68
  end
59
69
  end
70
+ end
71
+ end
60
72
 
61
- erb = ERB.new(File.read(options[:layout]))
62
- html = erb.result(b)
63
- rel_path = src_file.sub(/^#{Regexp.escape(src_dir)}\//, '')
64
- dest_rel_path = rel_path.sub(/\.textile$/, '.html')
65
- dest_path = File.expand_path(dest_rel_path, options[:dest_dir])
66
- dest_dir = File.dirname(dest_path)
67
- FileUtils.mkdir_p(dest_dir)
68
- File.open(dest_path, "w"){|f| f.puts(html)}
73
+ def process_textile(src_file)
74
+ src = ERB.new(File.read(src_file)).result
75
+ html_body = RedCloth.new(src).to_html
76
+ html_body, links = pickup_headers(html_body)
77
+ b = binding_for_yield do|*args|
78
+ arg = args.first
79
+ case arg
80
+ when nil then html_body
81
+ when :page_outline then build_page_outlines(links)
82
+ else
83
+ nil
84
+ end
69
85
  end
86
+ html = @layout_erb.result(b)
87
+ write_text(src_file, html, [/\.textile$/, '.html'])
88
+ end
89
+
90
+ def process_html_template(src_file)
91
+ html_body = ERB.new(File.read(src_file)).result
92
+ b = binding_for_yield{|*args| html_body}
93
+ html = @layout_erb.result(b)
94
+ write_text(src_file, html, [/\.erb$/i, ''])
95
+ end
96
+
97
+ def process_css_template(src_file)
98
+ body = ERB.new(File.read(src_file)).result
99
+ write_text(src_file, body, [/\.erb$/i, ''])
100
+ end
101
+
102
+ def process_text(src_file)
103
+ copy(src_file)
104
+ end
105
+
106
+ def process_image(src_file)
107
+ copy(src_file)
108
+ end
109
+
110
+ private
111
+
112
+ def copy(src_file, path_sub_args = [])
113
+ dest_path = dest_path(src_file, path_sub_args)
114
+ dest_dir = File.dirname(dest_path)
115
+ FileUtils.mkdir_p(dest_dir)
116
+ FileUtils.cp(src_file, dest_path)
70
117
  end
71
118
 
119
+ def write_text(src_file, text, path_sub_args)
120
+ dest_path = dest_path(src_file, path_sub_args)
121
+ dest_dir = File.dirname(dest_path)
122
+ FileUtils.mkdir_p(dest_dir)
123
+ File.open(dest_path, "w"){|f| f.puts(text)}
124
+ end
125
+
126
+ def dest_path(src_file, path_sub_args)
127
+ dest_rel_path = path_sub_args.empty? ?
128
+ @rel_path :
129
+ @rel_path.sub(*path_sub_args)
130
+ File.expand_path(dest_rel_path, options[:dest_dir])
131
+ end
132
+
133
+
72
134
  end
data/textile2html.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{textile2html}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["akimatter"]
12
- s.date = %q{2010-12-17}
12
+ s.date = %q{2010-12-21}
13
13
  s.default_executable = %q{textile2html}
14
14
  s.description = %q{textile2html generate html from textile with ERB template by using RedCloth}
15
15
  s.email = %q{akm2000@gmail.com}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 2
9
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - akimatter
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-17 00:00:00 +09:00
17
+ date: 2010-12-21 00:00:00 +09:00
18
18
  default_executable: textile2html
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -139,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
139
  requirements:
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- hash: 3955570532499151001
142
+ hash: -1445524543752592999
143
143
  segments:
144
144
  - 0
145
145
  version: "0"