flutterby 0.0.7 → 0.0.8

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: 257ac8a84ea41487bbf327f0e7a925f2ec8f3f5c
4
- data.tar.gz: 93dfaeda969555a8197f38d794502f3cd7116926
3
+ metadata.gz: 6568ea63c5bdde201dbc5a1b742075e9cdf98353
4
+ data.tar.gz: e6b105a6a82e813e8bae5d41c81ff1a61d721c3e
5
5
  SHA512:
6
- metadata.gz: 5053ceb42b1769afe1e3a4755141bcb7944dc56f44d4ca587623e77c91b759362d9c499c23ecad0b621d8d5facc1c80e9c33e29df8005ac74594ca7971004fac
7
- data.tar.gz: d9abe432d2f653ded73dec6b2140e7ca8a718632c81b25b16ba34300d6e66fe902d2a5ec9aa1c22912f55860bfbbe49df3be8c42e99e9042df0fda87b0c54796
6
+ metadata.gz: 59b76bd0e67caa50af779351c25081cc2626e1074c6ebf323bc5a6b5f88d5c9e64850ec68c5beab7f109cbb3672f8f480530c0d7f4a0dc17e05dcb6189aa9817
7
+ data.tar.gz: 18de50df6ce8bc75282b8b97f4c010bfae23aab5f053397e4bbb18abea8600bcbc0581f04ac18c3e847f1da0beb3fb0a5e4576041392525723117b3a20a4ea99
data/README.md CHANGED
@@ -10,12 +10,12 @@ the _experimental_ bit, though. Use with care, if at all!)
10
10
  - Build your site simply as a tree of files and folders. Each file will be converted according to its extension chain (eg. `styles.css.scss` will be rendered as `styles.css`, `about.html.md` as `about.html` and so on.)
11
11
  - Built-in support for Markdown (by way of [Slodown](https://github.com/hmans/slodown)), [Sass](https://github.com/sass/sass), [ERB](http://ruby-doc.org/stdlib-2.4.0/libdoc/erb/rdoc/ERB.html) and [Slim](http://slim-lang.com/).
12
12
  - A (slow) HTTP server to serve your site dynamically (for development.)
13
+ - Dynamically enhance your site's functionality with Ruby code.
13
14
 
14
15
 
15
16
  ## Missing (but Planned) Features
16
17
 
17
18
  - Extract filters (like Slim, Sass etc.) to separate gems
18
- - Customize folder behavior through Ruby
19
19
  - Produce a fun screencast to explain what the heck is going on here!
20
20
  - More tests, of course!
21
21
 
data/flutterby.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
27
  spec.add_development_dependency 'awesome_print', '~> 0'
28
28
  spec.add_development_dependency 'gem-release', '~> 0'
29
+ spec.add_development_dependency 'pry', '~> 0.10'
29
30
 
30
31
  spec.add_dependency 'commander', '~> 4.4'
31
32
  spec.add_dependency 'slodown', '~> 0.3'
data/lib/flutterby/cli.rb CHANGED
@@ -20,6 +20,7 @@ Commander.configure do
20
20
  root.export(options.out)
21
21
  end
22
22
  end
23
+ alias_command :b, :build
23
24
 
24
25
  command :serve do |c|
25
26
  c.syntax = 'flutterby serve [options]'
@@ -35,4 +36,6 @@ Commander.configure do
35
36
  server.run!
36
37
  end
37
38
  end
39
+ alias_command :server, :serve
40
+ alias_command :s, :serve
38
41
  end
@@ -37,8 +37,12 @@ module Flutterby
37
37
  end
38
38
 
39
39
  @children.define_singleton_method(:find_by_name) do |name|
40
- name = name.split('.').first
41
- find { |c| c.name == name }
40
+ # Look for a fully qualified name (index.html), or a simple name (index)?
41
+ if name.include?(".")
42
+ find { |c| c.full_name == name }
43
+ else
44
+ find { |c| c.name == name }
45
+ end
42
46
  end
43
47
  end
44
48
 
@@ -4,6 +4,7 @@ require 'tilt'
4
4
  require 'slim'
5
5
  require 'toml'
6
6
  require 'mime-types'
7
+ require 'json'
7
8
 
8
9
  module Flutterby
9
10
  class File < Entity
@@ -25,6 +26,10 @@ module Flutterby
25
26
  # Read remaining data from frontmatter. Data in frontmatter
26
27
  # will always have precedence!
27
28
  @data.merge! parse_frontmatter
29
+
30
+ # Do some extra processing depending on extension
31
+ meth = "read_#{ext}"
32
+ send(meth) if respond_to?(meth)
28
33
  end
29
34
 
30
35
  def parse_frontmatter
@@ -52,8 +57,6 @@ module Flutterby
52
57
  meth = "process_#{filter}"
53
58
  if respond_to?(meth)
54
59
  result = send(meth, result)
55
- else
56
- puts "Woops, no #{meth} available :("
57
60
  end
58
61
  end
59
62
 
@@ -68,15 +71,7 @@ module Flutterby
68
71
  def view
69
72
  @view ||= begin
70
73
  View.new(self).tap do |view|
71
- # load additional view code
72
- if view_entity = sibling("_view.rb")
73
- case view_entity.ext
74
- when "rb" then
75
- view.instance_eval(view_entity.contents)
76
- else
77
- raise "Unknown view extension #{view_entity.full_name}"
78
- end
79
- end
74
+ parent.extend_view!(view) if parent
80
75
  end
81
76
  end
82
77
  end
@@ -100,6 +95,14 @@ module Flutterby
100
95
  engine.render
101
96
  end
102
97
 
98
+ def read_json
99
+ data.merge!(JSON.parse(contents))
100
+ end
101
+
102
+ def read_yaml
103
+ data.merge!(YAML.load(contents))
104
+ end
105
+
103
106
  def apply_layout(input)
104
107
  output = input
105
108
 
@@ -15,5 +15,22 @@ module Flutterby
15
15
  child.export(path)
16
16
  end
17
17
  end
18
+
19
+ def extend_view!(view)
20
+ # Load the view extension available in this folder into the given view.
21
+ #
22
+ if view_entity = find("_view.rb")
23
+ case view_entity.ext
24
+ when "rb" then
25
+ view.instance_eval(view_entity.contents)
26
+ else
27
+ raise "Unknown view extension #{view_entity.full_name}"
28
+ end
29
+ end
30
+
31
+ # Then pass the whole thing up the stack.
32
+ #
33
+ parent ? parent.extend_view!(view) : view
34
+ end
18
35
  end
19
36
  end
@@ -1,3 +1,3 @@
1
1
  module Flutterby
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flutterby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik Mans
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.10'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.10'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: commander
85
99
  requirement: !ruby/object:Gem::Requirement