yarrow 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODNiM2E2NjAzNzkwOTVmMDkyZGQzYjFmODg1YzFlZjRmZmYyMDZlZg==
4
+ ZjViODEzNDFmNDI5OTgwNjNkODY1YWExMDE4ZTM4YWYzNDQ3ZDJiOA==
5
5
  data.tar.gz: !binary |-
6
- ZTJhMDE4M2EzODBhNjUwODRkYjVkYzBhMzNmZDhiMzhiZmU4NmJiYg==
6
+ ODYwNjY4Y2QxMDYzZjdjZDEwOWMzOWY1ZjdhZGU0ZDBjZThlOWNhMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzVmOTRhYzVlZjIyMzkzMzhmYzEzOGFjN2Y3MmEzZGJkNGZlZDZkYmNiMTkw
10
- NjQyZDJkZjI4NGI5ZjYyODYzMjA5ZGJmZjI3N2M2MzA4ODVmODhlYmNlZjlk
11
- ZTk0MzYzZTQ3MzUwOWJlNjdiYTJhYWY2YjkzNzY1M2E5NTA0ZGU=
9
+ OGI4OWIxZTNjMDc1NWM4NGVlMGIwNGJiYzQwZWI3YTNhOTYxMWY0YWFjMjQy
10
+ MTlmODlhYmU3YTA5ZjJkNWQ3NTdjYjYzYmI3ZTNjMDc1ZjU3NDA3MDQ5NjY4
11
+ MzBmZmJlZTNmOTk4N2NmMzE1YjZkMDA4NDQyNDM2YmUxZTU5YzQ=
12
12
  data.tar.gz: !binary |-
13
- MDg4MDkyNzhlMzE1OTc0ZDIzNzc2Y2ZlNWFjN2U1NzJkNTc1N2U1OTg2ZmFl
14
- MDRkZGE2MWZlOWNjMWI4Y2VhODU1MDdiMDcyMDc3OTAyZjI0MTZjMWMyM2Yz
15
- Yjk5ZWM0Y2I5MjUzN2I5MWQ2MmNmZDg3ZDI5MTc4MTNlNWFiNzk=
13
+ NTRhZWNjNzcyNjcyM2M4YzkyZmQyNjMxYmMwNDVkMGVlNzYwYzcxMTVkOGYw
14
+ ZDBiOWY1Mjg4NzNiMjJkMTM2MWE0YzRiYzI4NDIzMzkyMDEzMzJkZGE4YWZl
15
+ NjEwNGYxN2RhMTQyM2UxZWU5ZTI3NjVkMzA2ODVlYTRlNzA5OGE=
@@ -0,0 +1,55 @@
1
+ # TODO: where else is this used?
2
+ require 'json'
3
+
4
+ module Yarrow
5
+ module Assets
6
+
7
+ ##
8
+ # Provides access to the bundle of compiled CSS and JS assets.
9
+ #
10
+ class Manifest
11
+
12
+ def initialize(config)
13
+ if config[:output_dir] && config[:manifest_path]
14
+ manifest_path = [config[:output_dir], config[:manifest_path]].join('/')
15
+ else
16
+ manifest_path = './manifest.json'
17
+ end
18
+
19
+ if File.exists?(manifest_path)
20
+ @manifest_index = JSON.parse(File.read(manifest_path))
21
+ else
22
+ @manifest_index = {
23
+ 'assets' => {},
24
+ 'files' => {}
25
+ }
26
+ end
27
+ end
28
+
29
+ def exists?(logical_path)
30
+ @manifest_index['assets'].key? logical_path
31
+ end
32
+
33
+ def digest_path(logical_path)
34
+ @manifest_index['assets'][logical_path]
35
+ end
36
+
37
+ def file(logical_path)
38
+ @manifest_index['files'][digest_path(logical_path)]
39
+ end
40
+
41
+ def logical_paths
42
+ @manifest_index['assets'].keys
43
+ end
44
+
45
+ def digest_paths
46
+ @manifest_index['files'].keys
47
+ end
48
+
49
+ def files
50
+ @manifest_index['files'].values
51
+ end
52
+
53
+ end
54
+ end
55
+ end
data/lib/yarrow/assets.rb CHANGED
@@ -1 +1,2 @@
1
- require_relative "assets/pipeline"
1
+ require_relative 'assets/pipeline'
2
+ require_relative 'assets/manifest'
@@ -1,9 +1,21 @@
1
1
  module Yarrow
2
2
  class Configuration < Hashie::Mash
3
3
 
4
- def self.load(file)
5
- configuration = self.new(YAML.load_file(file))
6
- configuration
4
+ class << self
5
+
6
+ def instance
7
+ @@configuration || Hashie::Mash.new
8
+ end
9
+
10
+ def register(file)
11
+ @@configuration = self.load(file)
12
+ end
13
+
14
+ def load(file)
15
+ configuration = self.new(YAML.load_file(file))
16
+ configuration
17
+ end
18
+
7
19
  end
8
20
 
9
21
  end
@@ -2,4 +2,7 @@
2
2
  # This is loaded when the configuration is initialized.
3
3
  meta:
4
4
  title: Default Project
5
- author: Project Author
5
+ author: Project Author
6
+ output:
7
+ object_map:
8
+ page: Yarrow::Model::Site.pages
@@ -0,0 +1,40 @@
1
+ module Yarrow
2
+ module HTML
3
+ module AssetTags
4
+
5
+ # TODO: make sprockets manifest optional/pluggable
6
+ def manifest
7
+ Yarrow::Assets::Manifest.new(config || {})
8
+ end
9
+
10
+ def all_script_tags
11
+ out = []
12
+ manifest.digest_paths.each do |asset|
13
+ out << script_tag(:asset => asset)
14
+ end
15
+ out.join["\n"]
16
+ end
17
+
18
+ def script_tag(options)
19
+ if options.has_key? :asset and manifest.exists?(options[:asset])
20
+ src_path = manifest.digest_path(options[:asset])
21
+ else
22
+ src_path = options[:src]
23
+ end
24
+
25
+ "<script src=\"#{src_path}\"></script>"
26
+ end
27
+
28
+ def link_tag(options)
29
+ if options.has_key? :asset and manifest.exists?(options[:asset])
30
+ href_path = manifest.digest_path(options[:asset])
31
+ else
32
+ href_path = options[:href]
33
+ end
34
+
35
+ "<link href=\"#{href_path}\" rel=\"stylesheet\" type=\"text/css\">"
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,7 @@
1
+ module Yarrow
2
+ module HTML
3
+ module ContentTags
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ require_relative 'html/asset_tags'
@@ -0,0 +1,13 @@
1
+ require "mementus"
2
+ require "active_support/inflector"
3
+
4
+ module Yarrow
5
+ module Model
6
+ class Base < Mementus::Model
7
+ def self.inherited(klass)
8
+ self.superclass.inherited(klass)
9
+ Index.register(klass)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require "active_support/inflector"
2
+
3
+ module Yarrow
4
+ module Model
5
+ class Index
6
+ def self.register(klass)
7
+ method_name = ActiveSupport::Inflector.pluralize(ActiveSupport::Inflector.underscore(klass.to_s)).to_sym
8
+ puts method_name
9
+ define_singleton_method method_name, lambda { klass.all }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ module Yarrow
2
+ module Output
3
+
4
+ ##
5
+ # Provides a data context for rendering a template.
6
+ #
7
+ # Methods provided by this class become available as named variables in Mustache templates.
8
+ #
9
+ # Includes the library of helpers for dynamically generating HTML tags.
10
+ #
11
+ class Context
12
+
13
+ include Yarrow::HTML::AssetTags
14
+
15
+ def initialize(attributes)
16
+ metaclass = class << self; self; end
17
+ attributes.each do |name, value|
18
+ metaclass.send :define_method, name, lambda { value }
19
+ end
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ module Yarrow
2
+ module Output
3
+ # Generates documentation from an object model.
4
+ class Generator
5
+ def initialize(config={})
6
+ @config = config
7
+ end
8
+
9
+ # Mapping between template types and provided object model
10
+ def object_map
11
+ @config.output.object_map
12
+ end
13
+
14
+ # Mapping between template types and provided output templates.
15
+ def template_map
16
+
17
+ end
18
+
19
+ # Template converter used by this generator instance.
20
+ def converter
21
+
22
+ end
23
+
24
+ def write_output_file(filename, content)
25
+ end
26
+
27
+ # Builds the output documentation.
28
+ def build_docs
29
+ object_map.each do |index, objects|
30
+ objects.each do |object|
31
+ template_context = {
32
+ #:meta => Site
33
+ index => object
34
+ }
35
+ content = converter.render(template_map[index], template_context)
36
+ filename = converter.filename_for(object)
37
+ write_output_file(filename, content)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,23 @@
1
+ module Yarrow
2
+ module Output
3
+ class Mapper
4
+
5
+ def initialize(config)
6
+ @config = config
7
+ end
8
+
9
+ def object_map
10
+ @config.output.object_map
11
+ end
12
+
13
+ def template_map
14
+ @config.output.template_map
15
+ end
16
+
17
+ def model
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -3,7 +3,7 @@ module Yarrow
3
3
  module FrontMatter
4
4
 
5
5
  def read_split_content(path)
6
- extract_split_content(File.read(path))
6
+ extract_split_content(File.read(path, :encoding => 'utf-8'))
7
7
  end
8
8
 
9
9
  def extract_split_content(text)
@@ -1,4 +1,4 @@
1
1
  module Yarrow
2
2
  APP_NAME = "Yarrow"
3
- VERSION = "0.2.5"
3
+ VERSION = "0.2.6"
4
4
  end
data/lib/yarrow.rb CHANGED
@@ -6,8 +6,13 @@ require_relative "yarrow/logging"
6
6
  require_relative "yarrow/configuration"
7
7
  require_relative "yarrow/console_runner"
8
8
  require_relative "yarrow/generator"
9
+ require_relative "yarrow/model/index"
10
+ require_relative "yarrow/model/base"
11
+ require_relative "yarrow/output/mapper"
12
+ require_relative "yarrow/output/generator"
9
13
  require_relative "yarrow/content_map"
10
14
  require_relative "yarrow/assets"
15
+ require_relative "yarrow/html"
11
16
  require_relative "yarrow/tools/front_matter"
12
17
 
13
18
  # Dir[File.dirname(__FILE__) + "/yarrow/generators/*.rb"].each do |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.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-04 00:00:00.000000000 Z
11
+ date: 2014-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +109,7 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  description: Yarrow is a tool for generating well structured documentation from a
98
- variety of input sourcespec.
112
+ variety of input sources.
99
113
  email: me@maetl.net
100
114
  executables:
101
115
  - yarrow
@@ -103,6 +117,7 @@ extensions: []
103
117
  extra_rdoc_files: []
104
118
  files:
105
119
  - bin/yarrow
120
+ - lib/yarrow/assets/manifest.rb
106
121
  - lib/yarrow/assets/pipeline.rb
107
122
  - lib/yarrow/assets.rb
108
123
  - lib/yarrow/configuration.rb
@@ -110,7 +125,15 @@ files:
110
125
  - lib/yarrow/content_map.rb
111
126
  - lib/yarrow/defaults.yml
112
127
  - lib/yarrow/generator.rb
128
+ - lib/yarrow/html/asset_tags.rb
129
+ - lib/yarrow/html/content_tags.rb
130
+ - lib/yarrow/html.rb
113
131
  - lib/yarrow/logging.rb
132
+ - lib/yarrow/model/base.rb
133
+ - lib/yarrow/model/index.rb
134
+ - lib/yarrow/output/context.rb
135
+ - lib/yarrow/output/generator.rb
136
+ - lib/yarrow/output/mapper.rb
114
137
  - lib/yarrow/tools/front_matter.rb
115
138
  - lib/yarrow/version.rb
116
139
  - lib/yarrow.rb