yarrow 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b51706470a2ed364a5f75a8afd814d790377c37d
4
- data.tar.gz: 429742706a961398946fec5082e0fcdec4bc0e43
3
+ metadata.gz: 1ac7d475a5d695a78ef24f94d64637deae4b2c70
4
+ data.tar.gz: 243ea4a6f7db3dd7b9f2e414b2d2b6bb9e20963f
5
5
  SHA512:
6
- metadata.gz: 6b7fe451cbe5df3b2c2e5b38e99e3274a57118059099f7477ac2d577694edc5307bed004e8ab61d3e2580b803f318120b6001184df5a0a09a8168a25a5c97839
7
- data.tar.gz: f80b00ea6ed50906e5d68b81c34564cea2e6a5664aeca76c95e0ef138133e50c035677c1948953f1151a88b5d608412eb6271508ea1f37b9b86db45edbfd111b
6
+ metadata.gz: 286765ed5b70e517868705c25cc545fa31ff109bcbcd3f727e323be6e858bae8e8c9175f6d536cf422ed523516f9c457e79faaca65414e3ea5155d8a0f992f8a
7
+ data.tar.gz: 2dc1154778db5e8ffc6656f0af62f1e7604ae0ba2ec0dde0d65fcb75af8ff8a7a796964e6493a21454dca9289d6222396c3a91510f7b4c01e6588fa1cbf2cff2
data/bin/yarrow-server CHANGED
@@ -8,6 +8,6 @@ end
8
8
  $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
9
 
10
10
  require 'yarrow'
11
- require 'yarrow/server'
12
11
 
13
- Yarrow::Server.run
12
+ server = Yarrow::Server.new
13
+ server.run
@@ -46,7 +46,7 @@ module Yarrow
46
46
  # @param logical_path [String]
47
47
  # @return Boolean
48
48
  def exists?(logical_path)
49
- @manifest_index['assets'].key? logical_path
49
+ @manifest_index['assets'].key? logical_path
50
50
  end
51
51
 
52
52
  ##
@@ -55,7 +55,7 @@ module Yarrow
55
55
  # @param logical_path [String]
56
56
  # @return [String]
57
57
  def digest_path(logical_path)
58
- @manifest_index['assets'][logical_path]
58
+ @manifest_index['assets'][logical_path]
59
59
  end
60
60
 
61
61
  ##
@@ -64,7 +64,7 @@ module Yarrow
64
64
  # @param logical_path [String]
65
65
  # @return [Hash]
66
66
  def file(logical_path)
67
- @manifest_index['files'][digest_path(logical_path)]
67
+ @manifest_index['files'][digest_path(logical_path)]
68
68
  end
69
69
 
70
70
  ##
@@ -72,7 +72,7 @@ module Yarrow
72
72
  #
73
73
  # @return [Array<String>]
74
74
  def logical_paths
75
- @manifest_index['assets'].keys
75
+ @manifest_index['assets'].keys
76
76
  end
77
77
 
78
78
  ##
@@ -80,7 +80,7 @@ module Yarrow
80
80
  #
81
81
  # @return [Array<String>]
82
82
  def digest_paths
83
- @manifest_index['files'].keys
83
+ @manifest_index['files'].keys
84
84
  end
85
85
 
86
86
  ##
@@ -88,7 +88,7 @@ module Yarrow
88
88
  #
89
89
  # @return [Array<Hash>]
90
90
  def files
91
- @manifest_index['files'].values
91
+ @manifest_index['files'].values
92
92
  end
93
93
 
94
94
  ##
@@ -35,7 +35,6 @@ module Yarrow
35
35
  @@configuration = self.new
36
36
  end
37
37
 
38
-
39
38
  ##
40
39
  # Merges the given configuration or hash-like object with the
41
40
  # registered global configuration.
@@ -1,22 +1,22 @@
1
1
  module Yarrow
2
-
2
+
3
3
  class ConsoleRunner
4
-
4
+
5
5
  SUCCESS = 0
6
6
  FAILURE = 1
7
-
7
+
8
8
  ENABLED_OPTIONS = {
9
9
  :h => :help,
10
10
  :v => :version,
11
11
  :c => :config,
12
12
  :t => :theme,
13
13
  }
14
-
14
+
15
15
  ALLOWED_CONFIG_FILES = [
16
16
  '.yarrowdoc',
17
17
  'Yarrowdoc'
18
18
  ]
19
-
19
+
20
20
  def initialize(arguments, io=STDOUT)
21
21
  @out = io
22
22
  @arguments = arguments
@@ -24,11 +24,11 @@ module Yarrow
24
24
  @targets = []
25
25
  @config = Configuration.load(File.dirname(__FILE__) + "/defaults.yml")
26
26
  end
27
-
27
+
28
28
  def config
29
29
  @config
30
30
  end
31
-
31
+
32
32
  def run_application
33
33
  print_header
34
34
 
@@ -58,7 +58,7 @@ module Yarrow
58
58
  FAILURE
59
59
  end
60
60
  end
61
-
61
+
62
62
  def process_arguments
63
63
  @arguments.each do |arg|
64
64
  if is_option?(arg)
@@ -68,7 +68,7 @@ module Yarrow
68
68
  end
69
69
  end
70
70
  end
71
-
71
+
72
72
  # def load_configuration(path)
73
73
  # ALLOWED_CONFIG_FILES.each do |filename|
74
74
  # config_path = path + '/' + filename
@@ -78,9 +78,9 @@ module Yarrow
78
78
  # end
79
79
  # end
80
80
  # end
81
-
81
+
82
82
  def process_configuration
83
- #load_configuration(Dir.pwd)
83
+ # load_configuration(Dir.pwd)
84
84
 
85
85
  # @targets.each do |input_path|
86
86
  # @config.deep_merge! load_configuration(input_path)
@@ -93,16 +93,17 @@ module Yarrow
93
93
 
94
94
  @config.options = @options.to_hash
95
95
 
96
- #normalize_theme_path
96
+ # normalize_theme_path
97
97
 
98
- #theme = @config.options.theme
99
- #@config.append load_configuration(theme)
98
+ # theme = @config.options.theme
99
+ # @config.append load_configuration(theme)
100
100
  end
101
-
101
+
102
102
  def normalize_theme_path
103
-
103
+
104
+ # noop
104
105
  end
105
-
106
+
106
107
  def register_option(raw_option)
107
108
  option = raw_option.gsub(":", "=")
108
109
  if option.include? "="
@@ -129,35 +130,35 @@ module Yarrow
129
130
 
130
131
  raise "Unrecognized option: #{raw_option}"
131
132
  end
132
-
133
+
133
134
  def is_option?(argument)
134
135
  argument[0] == "-"
135
136
  end
136
-
137
+
137
138
  def has_option?(option)
138
139
  @options.has_key? option
139
140
  end
140
-
141
+
141
142
  def run_input_process
142
-
143
+ # noop
143
144
  end
144
145
 
145
146
  def run_output_process
146
-
147
+ # noop
147
148
  end
148
-
149
+
149
150
  def print_header
150
151
  @out.puts Yarrow::APP_NAME + " " + Yarrow::VERSION
151
152
  end
152
-
153
+
153
154
  def print_footer
154
155
  @out.puts "Content generated at {path}!"
155
156
  end
156
-
157
+
157
158
  def print_error(e)
158
159
  @out.puts "Error! " + e.to_s
159
160
  end
160
-
161
+
161
162
  def print_help
162
163
  help = <<HELP
163
164
  See http://yarrowdoc.org for more information.
@@ -197,4 +198,4 @@ HELP
197
198
 
198
199
  end
199
200
 
200
- end
201
+ end
data/lib/yarrow/server.rb CHANGED
@@ -2,16 +2,101 @@ require 'rack'
2
2
 
3
3
  module Yarrow
4
4
  ##
5
- # Little server for viewing the generated output as a local website.
5
+ # Little web server for browsing local files.
6
6
  class Server
7
+ include Configurable
7
8
 
8
- def self.run
9
- local_server = Rack::Builder.new do
10
- run Rack::Directory.new(Dir.pwd)
9
+ def initialize
10
+ if config.server.nil?
11
+ config.server = default_server_config
11
12
  end
13
+ end
14
+
15
+ ##
16
+ # Rack Middleware for detecting and serving an 'index.html' file
17
+ # instead of a directory index.
18
+ #
19
+ # TODO: Add configurable mapping and media types for README files as an alternative
20
+ class DirectoryIndex
21
+ def initialize(app, options={})
22
+ @app = app
23
+ @root = options[:root]
24
+ @index_file = options[:index]
25
+ end
26
+
27
+ def call(env)
28
+ index_path = ::File.join(@root, Rack::Request.new(env).path.split('/'), @index_file)
29
+ if ::File.exists?(index_path)
30
+ return [200, {"Content-Type" => "text/html"}, [::File.read(index_path)]]
31
+ else
32
+ @app.call(env)
33
+ end
34
+ end
35
+ end
36
+
37
+ ##
38
+ # Builds a Rack application to serve files in the output directory.
39
+ #
40
+ # If no output directory is specified, defaults to the current working
41
+ # directory.
42
+ #
43
+ # @return [Yarrow::Server::StaticFiles]
44
+ def app
45
+ root = docroot
46
+
47
+ Rack::Builder.new do
48
+ use Rack::ShowExceptions
49
+ use Rack::CommonLogger
50
+ use Rack::ContentLength
51
+ use DirectoryIndex, root: root, index: 'index.html'
52
+ run Rack::Directory.new(root)
53
+ end
54
+ end
55
+
56
+ ##
57
+ # Starts the server.
58
+ #
59
+ # Listens on `localhost:8888` unless `server.host` and `server.port` are
60
+ # provided in the config.
61
+ #
62
+ def run
63
+ server = Rack::Handler.get(rack_options[:server])
64
+ server.run(app, rack_options)
65
+ end
12
66
 
13
- Rack::Handler.default.run(local_server, :port => 8080)
67
+ private
68
+
69
+ ##
70
+ # @return [String]
71
+ def docroot
72
+ config.output_dir || Dir.pwd
73
+ end
74
+
75
+ ##
76
+ # @return [Hash]
77
+ def default_server_config
78
+ {
79
+ port: 8888,
80
+ host: 'localhost',
81
+ handler: :thin
82
+ }
14
83
  end
15
84
 
85
+ ##
86
+ # Stub to fill in default Rack options that will eventually be
87
+ # provided by config.
88
+ #
89
+ # TODO: remove this and use config.merge to build a single access point
90
+ def rack_options
91
+ rack_options = {
92
+ :Port => config.server.port,
93
+ :Host => config.server.port,
94
+ :server => config.server.handler,
95
+ :daemonize => false,
96
+ :quiet => false,
97
+ :warn => true,
98
+ :debug => true,
99
+ }
100
+ end
16
101
  end
17
102
  end
@@ -1,4 +1,4 @@
1
1
  module Yarrow
2
- APP_NAME = 'Yarrow'
3
- VERSION = '0.3.0'
2
+ APP_NAME = 'Yarrow'.freeze
3
+ VERSION = '0.3.1'.freeze
4
4
  end
data/lib/yarrow.rb CHANGED
@@ -16,6 +16,7 @@ require 'yarrow/content_map'
16
16
  require 'yarrow/assets'
17
17
  require 'yarrow/html'
18
18
  require 'yarrow/tools/front_matter'
19
+ require 'yarrow/server'
19
20
 
20
21
  # Dir[File.dirname(__FILE__) + '/yarrow/generators/*.rb'].each do |generator|
21
22
  # require generator
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-06 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rack-test
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: Yarrow is a tool for generating well structured documentation from a
140
154
  variety of input sources.
141
155
  email: me@maetl.net
@@ -188,8 +202,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
202
  version: '0'
189
203
  requirements: []
190
204
  rubyforge_project:
191
- rubygems_version: 2.4.2
205
+ rubygems_version: 2.2.2
192
206
  signing_key:
193
207
  specification_version: 4
194
208
  summary: Documentation generator based on a fluent data model.
195
209
  test_files: []
210
+ has_rdoc: