weaver 0.8.0 → 0.8.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.
@@ -0,0 +1,19 @@
1
+ module Weaver
2
+ # Page that uses columns and rows
3
+ class StructuredPage < Page
4
+ def initialize(title, global_settings, options, &block)
5
+ @rows = []
6
+ super
7
+ end
8
+
9
+ def header(&block)
10
+ row(class: 'wrapper border-bottom white-bg page-heading', &block)
11
+ end
12
+
13
+ def row(options = {}, &block)
14
+ r = Row.new(self, @anchors, options)
15
+ r.instance_eval(&block)
16
+ @rows << r
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,167 @@
1
+ require 'weaver/page_types/nav_page'
2
+ module Weaver
3
+ class TopNavPage < NavPage
4
+ def initialize(title, global_settings, options, &block)
5
+ super
6
+ end
7
+
8
+ def generate(level)
9
+ instance_eval &@block
10
+ rows = @rows.map do |row|
11
+ <<-ENDROW
12
+ <div class="row #{row.extra_classes}" style="#{row.style}">
13
+ #{row.generate}
14
+ </div>
15
+ ENDROW
16
+ end.join
17
+
18
+ @body_class = 'top-navigation'
19
+ @loading_bar_visible = true
20
+
21
+ menu = @menu
22
+
23
+ navigation = Elements.new(self, @anchors)
24
+ navigation.instance_eval do
25
+ menu.items.each do |item|
26
+ next unless item[:options][:position] != :right
27
+
28
+ li item[:options] do
29
+ if item.key? :menu
30
+
31
+ li class: 'dropdown' do
32
+ a "aria-expanded": 'false',
33
+ role: 'button',
34
+ href: '#',
35
+ class: 'dropdown-toggle',
36
+ "data-toggle": 'dropdown' do
37
+
38
+ icon item[:icon]
39
+ text item[:name]
40
+ span class: 'caret' do
41
+ text ''
42
+ end
43
+ end
44
+ ul role: 'menu', class: 'dropdown-menu' do
45
+ item[:menu].items.each do |inneritem|
46
+ li inneritem[:options] do
47
+ if inneritem.key?(:menu)
48
+ raise 'Second level menu not supported'
49
+ else
50
+ hyperlink inneritem[:link], inneritem[:name]
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ elsif
57
+ hyperlink (item[:link]).to_s do
58
+ span class: 'nav-label' do
59
+ icon item[:icon]
60
+ text item[:name]
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ navigation_right = Elements.new(self, @anchors)
69
+ navigation_right.instance_eval do
70
+ menu.items.each do |item|
71
+ next unless item[:options][:position] == :right
72
+
73
+ li item[:options] do
74
+ if item.key? :menu
75
+
76
+ li class: 'dropdown' do
77
+ a "aria-expanded": 'false',
78
+ role: 'button',
79
+ href: '#',
80
+ class: 'dropdown-toggle',
81
+ "data-toggle": 'dropdown' do
82
+
83
+ icon item[:icon]
84
+ text item[:name]
85
+ span class: 'caret' do
86
+ text ''
87
+ end
88
+ end
89
+ ul role: 'menu', class: 'dropdown-menu' do
90
+ item[:menu].items.each do |inneritem|
91
+ li inneritem[:options] do
92
+ if inneritem.key?(:menu)
93
+ raise 'Second level menu not supported'
94
+ else
95
+ hyperlink inneritem[:link], inneritem[:name]
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+ elsif
102
+ hyperlink (item[:link]).to_s do
103
+ span class: 'nav-label' do
104
+ icon item[:icon]
105
+ text item[:name]
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ brand_content = ''
114
+
115
+ if @brand
116
+ brand_content = <<-BRAND_CONTENT
117
+
118
+ <div class="navbar-header">
119
+
120
+ <a href="#{root}" class="navbar-brand">#{@brand}</a>
121
+ </div>
122
+ BRAND_CONTENT
123
+ end
124
+
125
+ @content =
126
+ <<-ENDBODY
127
+ <div id="wrapper">
128
+
129
+ <div id="page-wrapper" class="gray-bg">
130
+ <div class="row border-bottom white-bg">
131
+
132
+ <nav class="navbar navbar-static-top" role="navigation">
133
+ <button aria-controls="navbar" aria-expanded="false" data-target="#navbar" data-toggle="collapse" class="navbar-toggle collapsed" type="button">
134
+ <i class="fa fa-reorder"></i>
135
+ </button>
136
+ #{brand_content}
137
+
138
+ <div class="navbar-collapse collapse" id="navbar">
139
+ <ul class="nav navbar-nav">
140
+ #{navigation.generate}
141
+ </ul>
142
+ <ul class="nav navbar-top-links navbar-right">
143
+ #{navigation_right.generate}
144
+ </ul>
145
+ </div>
146
+
147
+
148
+
149
+ </nav>
150
+ </div>
151
+
152
+
153
+ <div class="wrapper-content">
154
+ <div class="container">
155
+ #{rows}
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ ENDBODY
161
+
162
+ super
163
+ end
164
+ end
165
+ end
166
+
167
+ Weaver::Weave.register_page_type(:topnav_page, Weaver::TopNavPage)
@@ -1,3 +1,3 @@
1
1
  module Weaver
2
- VERSION = "0.8.0"
2
+ VERSION = '0.8.1'.freeze
3
3
  end
@@ -0,0 +1,44 @@
1
+ module Weaver
2
+ # Handles .weave file
3
+ class Weave
4
+ attr_accessor :pages
5
+ def initialize(file, options = {})
6
+ @pages = {}
7
+ @file = file
8
+ @global_settings = options
9
+
10
+ @global_settings[:root] = @global_settings[:root] || '/'
11
+ unless @global_settings[:root].end_with? '/'
12
+ @global_settings[:root] = "#{@global_settings[:root]}/"
13
+ end
14
+ instance_eval(File.read(file), file)
15
+ end
16
+
17
+ def set_global(key, value)
18
+ @global_settings[key] = value
19
+ end
20
+
21
+ def include(file)
22
+ dir = File.dirname(@file)
23
+ filename = File.join([dir, file])
24
+ File.read(filename)
25
+ load filename
26
+ end
27
+
28
+ class << self
29
+ def register_page_type(symbol, class_constant)
30
+ define_method symbol,
31
+ (proc do |path = '', title = nil, options = {}, &block|
32
+ if title.nil?
33
+ title = path
34
+ path = ''
35
+ end
36
+
37
+ p = class_constant.new(title, @global_settings, options,
38
+ &block)
39
+ @pages[path] = p
40
+ end)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,36 +1,39 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'weaver/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "weaver"
6
+ unless spec.respond_to?(:metadata)
7
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host',
8
+ # or delete this section to allow pushing this gem to any host.
9
+ raise <<-ERR
10
+ RubyGems 2.0 or newer is required to protect against public gem pushes.
11
+ ERR
12
+ end
13
+
14
+ spec.name = 'weaver'
8
15
  spec.version = Weaver::VERSION
9
- spec.authors = ["David Siaw"]
10
- spec.email = ["davidsiaw@gmail.com"]
16
+ spec.authors = ['David Siaw']
17
+ spec.email = ['davidsiaw@gmail.com']
11
18
 
12
- spec.summary = "Website generator"
13
- spec.description = "Site generator with a simple DSL"
14
- spec.homepage = "https://davidsiaw.github.io/weaver-docs/"
15
- spec.license = "MIT"
19
+ spec.summary = 'Website generator'
20
+ spec.description = 'Site generator with a simple DSL'
21
+ spec.homepage = 'https://davidsiaw.github.io/weaver-docs/'
22
+ spec.license = 'MIT'
16
23
 
17
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
- # delete this section to allow pushing this gem to any host.
19
- if spec.respond_to?(:metadata)
20
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
- else
22
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
24
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
25
+ f.match(%r{^(test|spec|features)/})
23
26
  end
24
-
25
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "exe"
27
+ spec.bindir = 'exe'
27
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
+ spec.require_paths = ['lib']
30
+
31
+ spec.add_dependency 'activesupport'
32
+ spec.add_dependency 'optimist'
33
+ spec.add_dependency 'sinatra', '~> 2.0.3'
29
34
 
30
- spec.add_dependency "activesupport"
31
- spec.add_dependency "sinatra", "~> 2.0.3"
32
- spec.add_dependency "optimist"
35
+ spec.add_development_dependency 'bundler', '~> 1.9'
36
+ spec.add_development_dependency 'rake', '~> 10.0'
33
37
 
34
- spec.add_development_dependency "bundler", "~> 1.9"
35
- spec.add_development_dependency "rake", "~> 10.0"
38
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
36
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weaver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Siaw
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-25 00:00:00.000000000 Z
11
+ date: 2019-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -25,33 +25,33 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: sinatra
28
+ name: optimist
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.3
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.3
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: optimist
42
+ name: sinatra
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 2.0.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 2.0.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -31324,7 +31324,31 @@ files:
31324
31324
  - data/weaver/js/weaver.js
31325
31325
  - exe/weaver
31326
31326
  - lib/weaver.rb
31327
+ - lib/weaver/element_types/accordion.rb
31328
+ - lib/weaver/element_types/action.rb
31329
+ - lib/weaver/element_types/code.rb
31330
+ - lib/weaver/element_types/dynamic_table.rb
31331
+ - lib/weaver/element_types/dynamic_table_cell.rb
31332
+ - lib/weaver/element_types/form.rb
31333
+ - lib/weaver/element_types/form_elements.rb
31334
+ - lib/weaver/element_types/javascript_object.rb
31335
+ - lib/weaver/element_types/modal_dialog.rb
31336
+ - lib/weaver/element_types/panel.rb
31337
+ - lib/weaver/element_types/row.rb
31338
+ - lib/weaver/element_types/tabs.rb
31339
+ - lib/weaver/element_types/textfield_javascript.rb
31340
+ - lib/weaver/elements.rb
31341
+ - lib/weaver/page_types/center_page.rb
31342
+ - lib/weaver/page_types/empty_page.rb
31343
+ - lib/weaver/page_types/nav_page.rb
31344
+ - lib/weaver/page_types/nonnav_page.rb
31345
+ - lib/weaver/page_types/page.rb
31346
+ - lib/weaver/page_types/raw_page.rb
31347
+ - lib/weaver/page_types/sidenav_page.rb
31348
+ - lib/weaver/page_types/structured_page.rb
31349
+ - lib/weaver/page_types/topnav_page.rb
31327
31350
  - lib/weaver/version.rb
31351
+ - lib/weaver/weave.rb
31328
31352
  - weaver.gemspec
31329
31353
  homepage: https://davidsiaw.github.io/weaver-docs/
31330
31354
  licenses:
@@ -31347,7 +31371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
31347
31371
  version: '0'
31348
31372
  requirements: []
31349
31373
  rubyforge_project:
31350
- rubygems_version: 2.6.11
31374
+ rubygems_version: 2.7.8
31351
31375
  signing_key:
31352
31376
  specification_version: 4
31353
31377
  summary: Website generator