bobkit 0.1.0 → 0.1.1

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: 95d438130c23ff3d67f82c43499807d9ff7981c1
4
- data.tar.gz: 591174800ff603804a523ec3aba57eb8d5139254
3
+ metadata.gz: b0d5ce22323d9500b5f9550aaee8eefcdb139087
4
+ data.tar.gz: d7a7214c3385c6f8342b52b94dc4856a0590a117
5
5
  SHA512:
6
- metadata.gz: 3eac42431d113cbdab201ac2c9072564b4a234341385b957249726996084f653e44e0ee083f8c3cfdb6319a87683cf78f6b02f21bad92ebc631df17b7d2955ad
7
- data.tar.gz: e19de9084da62e9b20da94b35d1221f08bf567d50ebbb5fb67d3282cab3472fd561ecdfc4bc7da5be2658e071c509974077d616b98b908f5c98f781478fa6f19
6
+ metadata.gz: 9d8f76201dd38ae07037e1834f55598a508cd5d1263465a1a428699c4eaa421c462b6b05177e7edc002273406f402a213cad43330c82625b218c39bc2aee3d01
7
+ data.tar.gz: 7f464bc9ed9f2780113a54b633327f65ccb7d6714ee49a53481611c981323e8c8a71d8fa46038c0e36531e91a87f82af18347cd661536b352b8f99054c0cff1f
data/README.md CHANGED
@@ -8,19 +8,23 @@ Bobkit - Site Generation Toolkit
8
8
 
9
9
  ---
10
10
 
11
- Bobkit is a lightweight tookit for generating static websites with Slim, SCSS
12
- and CoffeeScript.
11
+ Bobkit is a lightweight toolkit for generating static websites with:
13
12
 
14
- The design intentions were:
13
+ #### `Slim + SCSS + CoffeeScript + Markdown + I18n`
15
14
 
16
- - To provide easy to use wrapper methods for Slim, SCSS and CoffeeScript
17
- - To not impose any directory structure (this is not a blog generator...).
18
- - To allow you to use standard ruby for generating your site.
19
- - To be packaged as a library, and not a command line tool.
20
- - To provide sensible default locations that are easily overridable.
21
- - To add `render` and `layout` support to Slim (Rails-like).
22
- - To add i18n support to Slim (Rails-like).
23
- - To add `@import 'globbing/*'` support to SCSS (Rails-like).
15
+ ---
16
+
17
+ The design intentions were to:
18
+
19
+ - Provide easy to use wrapper methods for Slim, SCSS, CoffeeScript and
20
+ Markdown.
21
+ - Not impose any directory structure (this is not another blog generator...).
22
+ - Allow you to use standard ruby for generating your site how you see fit.
23
+ - Be packaged as a library, and not a command line tool.
24
+ - Provide sensible default locations that are easily overridable.
25
+ - Add `render` and `layout` support to Slim (Rails-like).
26
+ - Add i18n support to Slim (Rails-like).
27
+ - Add `@import 'globbing/*'` support to SCSS (Rails-like).
24
28
 
25
29
  ---
26
30
 
@@ -87,6 +91,9 @@ templates_folder 'views'
87
91
  # Default: "#{templates_folder}/layouts"
88
92
  layouts_folder 'my_layouts'
89
93
 
94
+ # Location of markdown files. Default: "markdown"
95
+ markdown_folder 'docs'
96
+
90
97
  # Location of the source SCSS files. Default: "styles"
91
98
  styles_folder 'styles'
92
99
 
@@ -115,7 +122,6 @@ scss_options cache: true, syntax: :scss, style: :nested
115
122
  use_defaults
116
123
  ```
117
124
 
118
-
119
125
  ### Slim
120
126
 
121
127
  ```ruby
@@ -135,11 +141,16 @@ html = render 'user', layout: 'default', email: 'bob@kit.com'
135
141
 
136
142
  # You can save to a file in the `output_folder`
137
143
  render 'user', layout: 'default', email: 'bob@kit.com', output: 'bob'
144
+
145
+ # You can send an HTML string as the content of a layout
146
+ render content: "<h1>Hello</h1>", layout: 'default'
138
147
  ```
139
148
 
140
149
  In addition, you can call `= render 'template'` from inside a slim
141
- template.
150
+ template.
142
151
 
152
+ To check if a certain context variable was provided to a slim template,
153
+ you can use `if have? :varname`.
143
154
 
144
155
  ### SCSS
145
156
 
@@ -161,11 +172,23 @@ js = compile_js 'script'
161
172
  compile_js 'script', output: 'main'
162
173
  ```
163
174
 
175
+ ### Markdown
176
+
177
+ ```ruby
178
+ # Compile a markdown file to HTML string
179
+ html = markdown 'article'
180
+
181
+ # Compile directly to a file, inside a slim layout
182
+ markdown 'article', layout: :default, output: 'article'
183
+
184
+ # All options pass through directly to the slim renderer
185
+ html = markdown 'article', layout: :default, sidebar: true
186
+ ```
164
187
 
165
188
  ### Asset helpers
166
189
 
167
190
  Anything other than CSS, Javascript and HTML is considered an asset.
168
- These are some helpers to help you move them acount from input to output
191
+ These are some helpers to help you move them around from input to output
169
192
  folders.
170
193
 
171
194
  ```ruby
@@ -208,7 +231,6 @@ create_folder 'my_folder'
208
231
  create_folder_for 'some/folder/with/file.png'
209
232
  ```
210
233
 
211
-
212
234
  ### File Watcher
213
235
 
214
236
  Bobkit comes bundled with FileWatcher, and has a shortcut method to
@@ -238,8 +260,6 @@ Todo
238
260
  - [ ] Consider adding `input_root` which will prefix all others
239
261
  - [ ] YAML loader (data_folder?)
240
262
  - [ ] CSV Loader (data_folder?)
241
- - [ ] Maybe: Render from/to Markdown
242
- - [ ] Maybe: Render to JSON
243
263
 
244
264
 
245
265
  [1]: https://github.com/DannyBen/bobkit/tree/master/examples
data/lib/bobkit.rb CHANGED
@@ -5,6 +5,7 @@ require 'sass-globbing'
5
5
  require 'slim'
6
6
  require 'coffee_script'
7
7
  require 'filewatcher'
8
+ require 'rdiscount'
8
9
 
9
10
  require 'bobkit/options_base'
10
11
  require 'bobkit/location_options'
@@ -17,6 +18,7 @@ require 'bobkit/sass_bridge'
17
18
  require 'bobkit/slim_options'
18
19
  require 'bobkit/slim_bridge'
19
20
  require 'bobkit/coffee_bridge'
21
+ require 'bobkit/markdown_bridge'
20
22
  require 'bobkit/assets'
21
23
  require 'bobkit/watcher'
22
24
 
@@ -6,6 +6,10 @@ module Bobkit
6
6
  setopt :templates_folder, path, 'templates'
7
7
  end
8
8
 
9
+ def markdown_folder(path=nil)
10
+ setopt :markdown_folder, path, 'markdown'
11
+ end
12
+
9
13
  def layouts_folder(path=nil)
10
14
  setopt :layouts_folder, path, "#{templates_folder}/layouts"
11
15
  end
@@ -0,0 +1,32 @@
1
+ module Bobkit
2
+ module MarkdownBridge
3
+ def markdown(file, *args)
4
+ MarkdownHandler.instance.compile file, *args
5
+ end
6
+
7
+ class MarkdownHandler
8
+ include Singleton
9
+ include SlimBridge
10
+ include LocationOptions
11
+
12
+ def compile(file, options={})
13
+ markdown = RDiscount.new file_content file
14
+ content = markdown.to_html
15
+ options[:content] = content
16
+ content = render options if options[:layout]
17
+ content
18
+ end
19
+
20
+ private
21
+
22
+ def file_content(basename)
23
+ File.read markdown_file basename
24
+ end
25
+
26
+ def markdown_file(basename)
27
+ "#{markdown_folder}/#{basename}.md"
28
+ end
29
+ end
30
+
31
+ end
32
+ end
data/lib/bobkit/scope.rb CHANGED
@@ -26,5 +26,7 @@ module Bobkit
26
26
  super
27
27
  end
28
28
  end
29
+ alias_method :have?, :respond_to?
30
+
29
31
  end
30
32
  end
@@ -17,13 +17,14 @@ module Bobkit
17
17
  partial = options.delete :partial
18
18
  layout = options.delete :layout
19
19
  output = options.delete :output
20
-
20
+ content = options.delete :content
21
+
21
22
  context = options.empty? ? scope : options
22
23
  if context.is_a? Hash or !context
23
24
  context = Scope.new context
24
25
  end
25
26
 
26
- content = Slim::Template.new(partial_filename(partial), slim_options).render(context)
27
+ content ||= Slim::Template.new(partial_filename(partial), slim_options).render(context)
27
28
  content = Slim::Template.new(layout_filename(layout), slim_options).render(context) { content } if layout
28
29
  create_file "#{output_folder}/#{output}.html", content if output
29
30
  content
data/lib/bobkit/tasks.rb CHANGED
@@ -6,6 +6,7 @@ module Bobkit
6
6
  include SlimBridge
7
7
  include CoffeeBridge
8
8
  include I18nBridge
9
+ include MarkdownBridge
9
10
  include SlimOptions
10
11
  include SassOptions
11
12
  include ScopeOptions
@@ -1,3 +1,3 @@
1
1
  module Bobkit
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bobkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-02 00:00:00.000000000 Z
11
+ date: 2016-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.12'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rdiscount
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.2'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.2'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: runfile
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,7 @@ files:
192
206
  - lib/bobkit/i18n_bridge.rb
193
207
  - lib/bobkit/i18n_mixin.rb
194
208
  - lib/bobkit/location_options.rb
209
+ - lib/bobkit/markdown_bridge.rb
195
210
  - lib/bobkit/options_base.rb
196
211
  - lib/bobkit/sass_bridge.rb
197
212
  - lib/bobkit/sass_options.rb