leandocument 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  > gem install leandocument
6
6
 
7
+ - Install Python and docutils if you use reStructuredText.
8
+
7
9
  ## Usage
8
10
 
9
11
  > $ cd **LEANDOCUMENT_DIR**
@@ -21,6 +23,14 @@ and
21
23
 
22
24
  ## ChangeLog
23
25
 
26
+ ### 0.1.2
27
+
28
+ - Support reStructuredText.
29
+
30
+ ### 0.1.1
31
+
32
+ - Move to Document.content method to public.
33
+
24
34
  ### 0.1.0
25
35
 
26
36
  - Dummy gem version update.
data/leandocument.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency 'grit'
25
25
  s.add_dependency 'rdiscount'
26
26
  s.add_dependency 'sinatra-partial'
27
+ s.add_dependency 'RbST'
27
28
  # s.add_development_dependency "rspec"
28
29
  # s.add_runtime_dependency "rest-client"
29
30
  end
data/lib/leandocument.rb CHANGED
@@ -9,7 +9,9 @@ require "leandocument/blob_image"
9
9
  require "leandocument/repository"
10
10
  require "leandocument/render"
11
11
  require "leandocument/render/markdown"
12
+ require "leandocument/render/re_structured_text"
12
13
  require "rdiscount"
14
+ require 'rbst'
13
15
  require "yaml"
14
16
  require 'grit'
15
17
  require 'digest/md5'
@@ -7,7 +7,7 @@
7
7
  module Leandocument
8
8
  class Document
9
9
  SETTING_FILE_NAME = "settings.yml"
10
- SUPPORT_EXTENSIONS = %w(md textile markdown mdown rdoc org creole mediawiki)
10
+ SUPPORT_EXTENSIONS = %w(md textile markdown mdown rdoc org creole mediawiki rst rest)
11
11
 
12
12
  # lang :: Document language. TODO support default language.
13
13
  # settings :: LeanDocument Settings. TODO read settings.
@@ -49,6 +49,7 @@ module Leandocument
49
49
  # ==== Return
50
50
  # HTML content.
51
51
  def to_html
52
+ return "" unless file_name
52
53
  return e if e?
53
54
  page = render.to_html
54
55
  path = File.dirname(file_path)
@@ -90,10 +91,24 @@ module Leandocument
90
91
  @toc += toc
91
92
  end
92
93
 
94
+ # Return file content or blank string
95
+ # ==== Return
96
+ # File content. Or blank string if file not found.
97
+ def content
98
+ return @content if @content
99
+ if self.commit
100
+ @content = find_content ? find_content.data.force_encoding('UTF-8') : ""
101
+ else
102
+ @content = File.exist?(self.file_path) ? open(self.file_path).read.force_encoding('UTF-8') : ""
103
+ end
104
+ @content
105
+ end
106
+
93
107
  protected
94
108
 
95
109
  def get_extension
96
110
  SUPPORT_EXTENSIONS.each do |ext|
111
+ next unless file_path(ext)
97
112
  return ext if File.exist?(file_path(ext))
98
113
  end
99
114
  return nil
@@ -121,13 +136,23 @@ module Leandocument
121
136
  end
122
137
 
123
138
  def basic_file_name(ext = nil)
124
- "README.#{self.lang}.#{ext ? ext : self.extension}"
139
+ f = "README.#{self.lang}.#{ext ? ext : self.extension}"
140
+ return f if File.exist? f
141
+ ary = Dir.entries(self.base_path).collect do |f|
142
+ if f =~ /^README\.([a-z]{2})\.(#{SUPPORT_EXTENSIONS.join("|")})/
143
+ self.lang = $1
144
+ self.extension = $2
145
+ return f
146
+ end
147
+ end
148
+ nil
125
149
  end
126
150
 
127
151
  # Return file path
128
152
  # ==== Return
129
153
  # Document file path
130
154
  def file_path(ext = nil)
155
+ return nil unless file_name(ext)
131
156
  "#{self.base_path}/#{file_name(ext)}"
132
157
  end
133
158
 
@@ -143,19 +168,6 @@ module Leandocument
143
168
  end
144
169
  end
145
170
 
146
- # Return file content or blank string
147
- # ==== Return
148
- # File content. Or blank string if file not found.
149
- def content
150
- return @content if @content
151
- if self.commit
152
- @content = find_content ? find_content.data.force_encoding('UTF-8') : ""
153
- else
154
- @content = File.exist?(self.file_path) ? open(self.file_path).read.force_encoding('UTF-8') : ""
155
- end
156
- @content
157
- end
158
-
159
171
  def render
160
172
  return nil unless self.extension
161
173
  send("render_#{self.extension}")
@@ -171,6 +183,14 @@ module Leandocument
171
183
  end
172
184
  alias :render_md :render_markdown
173
185
 
186
+ def render_rst
187
+ return @render if @render
188
+ @render = ReStructuredText.new(:content => content, :indent => self.indent, :path => self.commit ? "/commits/#{self.commit.id}#{self.web_path}" : self.web_path)
189
+ @render
190
+ end
191
+ alias :render_re_structured_text :render_rst
192
+ alias :render_rest :render_rst
193
+
174
194
  def setting_value(*ary)
175
195
  return nil unless self.settings
176
196
  results = self.settings
@@ -11,6 +11,7 @@ module Leandocument
11
11
  # Text content.
12
12
  def exec_trans
13
13
  content = indented_content
14
+ # .. image:: images/ball1.gif
14
15
  content = content.gsub(/^!\[(.*)\]\((.*)\)/, '![\\1]('+self.path+'\\2)') # For image
15
16
  end
16
17
 
@@ -0,0 +1,28 @@
1
+ module Leandocument
2
+ class ReStructuredText < Render
3
+ def to_html
4
+ html = RbST.new(exec_trans).to_html
5
+ 6.times do |i|
6
+ html = html.gsub("<h#{6 - i}", "<h#{5 - i + indent}").gsub("</h#{6 - i}>", "</h#{5 - i + indent}>")
7
+ end
8
+ html
9
+ end
10
+
11
+ # Convert to something from content.
12
+ # Currently, Change indent level.
13
+ # TODO support plugin and expand format.
14
+ # ==== Return
15
+ # Text content.
16
+ def exec_trans
17
+ content = indented_content
18
+ content = content.gsub(/^\.\. image:: (.*)$/, '.. image:: '+self.path+'\\1') # For image
19
+ end
20
+
21
+ def indented_content
22
+ content = analyse_content
23
+ unless self.indent == 1
24
+ content = "#{"="*30}\n#{title}\n#{"="*30}\n\n#{content}"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module Leandocument
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leandocument
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-07 00:00:00.000000000 Z
12
+ date: 2012-11-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: slop
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: RbST
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description: Ruby command and Web viewer for LeanDocument.
95
111
  email:
96
112
  - atsushi@moongift.jp
@@ -111,6 +127,7 @@ files:
111
127
  - lib/leandocument/document.rb
112
128
  - lib/leandocument/render.rb
113
129
  - lib/leandocument/render/markdown.rb
130
+ - lib/leandocument/render/re_structured_text.rb
114
131
  - lib/leandocument/repository.rb
115
132
  - lib/leandocument/server.rb
116
133
  - lib/leandocument/version.rb