yarrow 0.2.9 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a67be8972c7ab61211651896258120b27485152
4
- data.tar.gz: 09c34931e14fdc5099565347d47b8876df831102
3
+ metadata.gz: b51706470a2ed364a5f75a8afd814d790377c37d
4
+ data.tar.gz: 429742706a961398946fec5082e0fcdec4bc0e43
5
5
  SHA512:
6
- metadata.gz: 17007867d65925330adf3f5cf13ae1c15cd72d407c808cfa2908044ac348e3e1b430b71c9c1cb6d73078d22450d5bbad20d665f6547ec68b624a706017f49f69
7
- data.tar.gz: 9a912fe2206f7d061f286e6dba240aaf45642b79af3d19d59d9e252c2be542f0a91ff2e0fa93cd3af23f1ca7cb57efa7f436967fcf1b704c6fcf15aea1ee0948
6
+ metadata.gz: 6b7fe451cbe5df3b2c2e5b38e99e3274a57118059099f7477ac2d577694edc5307bed004e8ab61d3e2580b803f318120b6001184df5a0a09a8168a25a5c97839
7
+ data.tar.gz: f80b00ea6ed50906e5d68b81c34564cea2e6a5664aeca76c95e0ef138133e50c035677c1948953f1151a88b5d608412eb6271508ea1f37b9b86db45edbfd111b
data/bin/yarrow CHANGED
@@ -5,9 +5,9 @@ path = __FILE__
5
5
  while File.symlink?(path)
6
6
  path = File.expand_path(File.readlink(path), File.dirname(path))
7
7
  end
8
- $:.unshift(File.join(File.dirname(File.expand_path(path)), "..", "lib"))
8
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
9
 
10
- require "yarrow"
10
+ require 'yarrow'
11
11
 
12
12
  app = Yarrow::ConsoleRunner.new ARGV
13
13
  app.run_application
data/bin/yarrow-server ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # load path annoyance
4
+ path = __FILE__
5
+ while File.symlink?(path)
6
+ path = File.expand_path(File.readlink(path), File.dirname(path))
7
+ end
8
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
+
10
+ require 'yarrow'
11
+ require 'yarrow/server'
12
+
13
+ Yarrow::Server.run
@@ -3,12 +3,23 @@ require 'json'
3
3
 
4
4
  module Yarrow
5
5
  module Assets
6
-
7
6
  ##
8
7
  # Provides access to the bundle of compiled CSS and JS assets.
8
+ #
9
+ # This is currently based on the output structure of the JSON manifest file
10
+ # generated by Sprockets, but this class isn't coupled to the Sprockets API
11
+ # so could be used as a generic manifest reader.
12
+ #
13
+ # - `logical_path` represents the core named path to an asset sans version, eg: `main.css`
14
+ # - `digest_path` represents the versioned instance of an asset with associated digest,
15
+ # eg: `main-4362eea15558e73d3663de653cdeb81e.css`
9
16
  class Manifest
10
17
 
11
18
  ##
19
+ # Initializes the manifest from a Sprockets-style JSON file.
20
+ #
21
+ # If no assets directory is given, looks for a manifest in the main output directory.
22
+ #
12
23
  # @param config [Yarrow::Configuration]
13
24
  def initialize(config)
14
25
  raise Yarrow::ConfigurationError if config.assets.nil?
@@ -29,42 +40,85 @@ module Yarrow
29
40
  end
30
41
  end
31
42
 
43
+ ##
44
+ # True if the named asset exists.
45
+ #
46
+ # @param logical_path [String]
47
+ # @return Boolean
32
48
  def exists?(logical_path)
33
49
  @manifest_index['assets'].key? logical_path
34
50
  end
35
51
 
52
+ ##
53
+ # Returns the generated digest path to a named asset.
54
+ #
55
+ # @param logical_path [String]
56
+ # @return [String]
36
57
  def digest_path(logical_path)
37
58
  @manifest_index['assets'][logical_path]
38
59
  end
39
60
 
61
+ ##
62
+ # Returns a hash of file information for a generated asset.
63
+ #
64
+ # @param logical_path [String]
65
+ # @return [Hash]
40
66
  def file(logical_path)
41
67
  @manifest_index['files'][digest_path(logical_path)]
42
68
  end
43
69
 
70
+ ##
71
+ # Returns the list of named assets in the manifest.
72
+ #
73
+ # @return [Array<String>]
44
74
  def logical_paths
45
75
  @manifest_index['assets'].keys
46
76
  end
47
77
 
78
+ ##
79
+ # Returns the list of generated digest paths in the manifest.
80
+ #
81
+ # @return [Array<String>]
48
82
  def digest_paths
49
83
  @manifest_index['files'].keys
50
84
  end
51
85
 
86
+ ##
87
+ # Returns the list of generated files in the manifest.
88
+ #
89
+ # @return [Array<Hash>]
52
90
  def files
53
91
  @manifest_index['files'].values
54
92
  end
55
93
 
94
+ ##
95
+ # Returns the list of named CSS assets in the manifest.
96
+ #
97
+ # @return [Array<String>]
56
98
  def css_logical_paths
57
99
  select_by_extension(logical_paths, '.css')
58
100
  end
59
101
 
102
+ ##
103
+ # Returns the list of named JS assets in the manifest.
104
+ #
105
+ # @return [Array<String>]
60
106
  def js_logical_paths
61
107
  select_by_extension(logical_paths, '.js')
62
108
  end
63
109
 
110
+ ##
111
+ # Returns the list of generated CSS assets in the manifest.
112
+ #
113
+ # @return [Array<String>]
64
114
  def css_digest_paths
65
115
  select_by_extension(digest_paths, '.css')
66
116
  end
67
117
 
118
+ ##
119
+ # Returns the list of generated JS assets in the manifest.
120
+ #
121
+ # @return [Array<String>]
68
122
  def js_digest_paths
69
123
  select_by_extension(digest_paths, '.js')
70
124
  end
@@ -5,7 +5,7 @@ require 'sprockets'
5
5
  module Yarrow
6
6
  module Assets
7
7
  ##
8
- # A framework for processing and compressing static assets using Sprockets.
8
+ # Processes static assets using Sprockets.
9
9
  class Pipeline
10
10
 
11
11
  include Loggable
@@ -41,8 +41,10 @@ module Yarrow
41
41
  end
42
42
  end
43
43
 
44
+ ##
44
45
  # Compiles an asset manifest and processed output files from the given input bundles.
45
46
  # Also generates a manifest linking each output bundle to its given input name.
47
+ #
46
48
  # @param bundles [Array<String>]
47
49
  def compile(bundles = [])
48
50
  bundles.each do |bundle|
@@ -58,7 +60,9 @@ module Yarrow
58
60
  end
59
61
  end
60
62
 
63
+ ##
61
64
  # Copy the given files to the output path without processing or renaming.
65
+ #
62
66
  # @param bundle [Array<String>]
63
67
  def copy(bundles = [])
64
68
  bundles.each do |bundle|
@@ -79,9 +83,12 @@ module Yarrow
79
83
  manifest.clean(keep)
80
84
  end
81
85
 
86
+ ##
82
87
  # Access instance of the Sprockets environment.
83
- # TODO: make this private to avoid forcing a dependency on Sprockets
88
+ #
89
+ # @return [Sprockets::Environment]
84
90
  def environment
91
+ # TODO: decouple dependency on Sprockets
85
92
  @environment ||= create_environment
86
93
  end
87
94
 
@@ -0,0 +1,17 @@
1
+ require 'rack'
2
+
3
+ module Yarrow
4
+ ##
5
+ # Little server for viewing the generated output as a local website.
6
+ class Server
7
+
8
+ def self.run
9
+ local_server = Rack::Builder.new do
10
+ run Rack::Directory.new(Dir.pwd)
11
+ end
12
+
13
+ Rack::Handler.default.run(local_server, :port => 8080)
14
+ end
15
+
16
+ end
17
+ end
@@ -1,4 +1,4 @@
1
1
  module Yarrow
2
- APP_NAME = "Yarrow"
3
- VERSION = "0.2.9"
2
+ APP_NAME = 'Yarrow'
3
+ VERSION = '0.3.0'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -127,10 +141,12 @@ description: Yarrow is a tool for generating well structured documentation from
127
141
  email: me@maetl.net
128
142
  executables:
129
143
  - yarrow
144
+ - yarrow-server
130
145
  extensions: []
131
146
  extra_rdoc_files: []
132
147
  files:
133
148
  - bin/yarrow
149
+ - bin/yarrow-server
134
150
  - lib/yarrow.rb
135
151
  - lib/yarrow/assets.rb
136
152
  - lib/yarrow/assets/manifest.rb
@@ -149,6 +165,7 @@ files:
149
165
  - lib/yarrow/output/context.rb
150
166
  - lib/yarrow/output/generator.rb
151
167
  - lib/yarrow/output/mapper.rb
168
+ - lib/yarrow/server.rb
152
169
  - lib/yarrow/tools/front_matter.rb
153
170
  - lib/yarrow/version.rb
154
171
  homepage: http://rubygemspec.org/gems/yarrow