boot_wheel 0.0.1 → 0.0.3

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
  SHA256:
3
- metadata.gz: 8aff3dc0acba1e69de1bf9f88f9bc1680d397e1a0a0570e888b907a0d093cb2c
4
- data.tar.gz: b1dd66888ba3435e5d26e02b40714c4f70eeb9d19c728fddcfb7f57543e7b31b
3
+ metadata.gz: 2ab2c7bf94df7c94d71da88fa605d8ec51184de01fc2b58b831ee9b1ffc700d7
4
+ data.tar.gz: bf73bbea3588561f32d1ad996e08dfbdc2085b141b6a8c8ad9336b3fd6e39169
5
5
  SHA512:
6
- metadata.gz: 249b1169032025baefa130f1f8e66a85394611b4a820f57b7326d1257266badbbd1177468b56ce9854c22996beeaa52ebda8bf59b8f8812674c843816fce9bc7
7
- data.tar.gz: 4a0af7c51e9f95bb0451fb724da83d8232bb24b5624084f6085bd5a8b20d5a7b1b05199c4307c999315997b41fea2ce740a910c3311b339c1074c3da597aa34c
6
+ metadata.gz: e6565e2f0fc0657776b79edf8562a4f2fea9fa465c4417c339e126d8b9e1fea5bb38d69cd3caa230fdb74852c0c38447f6aa8d5b2931dbcecbe6b58dd60eca11
7
+ data.tar.gz: 36ed17cee1e618a0508ade35a60f91cf0ab366bbfe903dc29534fc6e6c8208ee4f6a3c309eec755f2be28de49d591fb32936ed1f4c471b66ae4e3e35cbdd65e0
data/examples/demo.rb ADDED
@@ -0,0 +1,13 @@
1
+ require_relative "../lib/boot_wheel/rugged"
2
+
3
+ TEMPLATE = <<~ERB
4
+ <%= BootWheel.page do %>
5
+ <%= BootWheel.table(
6
+ fields: [ { label: "AAA", key: :a }, { label: "BBB", key: :b } ],
7
+ items: [{ :a => 1, :b => 2}, { :c => 3, :d => 4}],
8
+ table_class: ["w-50"]
9
+ ) %>
10
+ <% end %>
11
+ ERB
12
+
13
+ puts BootWheel.renderer.render(:inline => TEMPLATE)
@@ -0,0 +1,33 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Bootstrap demo</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
8
+ </head>
9
+ <body>
10
+ <div class="container">
11
+ <table class="table w-50">
12
+ <thead>
13
+ <tr>
14
+ <th scope="col">AAA</th>
15
+ <th scope="col">BBB</th>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <tr>
20
+ <td>1</td>
21
+ <td>2</td>
22
+ </tr>
23
+ <tr>
24
+ <td>3</td>
25
+ <td>4</td>
26
+ </tr>
27
+ </tbody>
28
+ </table>
29
+
30
+ </div>
31
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
32
+ </body>
33
+ </html>
@@ -0,0 +1,17 @@
1
+ module BootWheel
2
+ def self.renderer
3
+ ActionController::Base.renderer
4
+ end
5
+
6
+ module Internals
7
+ class Component
8
+ def renderer
9
+ BootWheel.renderer
10
+ end
11
+
12
+ def helpers
13
+ ActionController::Base.helpers
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module BootWheel
2
+ module Internals
3
+ class Component
4
+ include LittleWheels::Component
5
+
6
+ def self.t(filename)
7
+ File.read(File.expand_path("../../../templates/#{filename}", File.dirname(__FILE__)))
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,57 @@
1
+ require "erb"
2
+
3
+ module BootWheel
4
+ def self.renderer
5
+ BootWheel::Internals::Renderer
6
+ end
7
+
8
+ def self.helpers
9
+ BootWheel::Internals::Renderer::HelpersStub
10
+ end
11
+
12
+ module Internals
13
+ # TEMPORARY COMPATIBILITY SHIM - NOT INTENDED FOR REAL USE
14
+ # Might want to extract something "Official" into Little Wheels
15
+ # for testing outside a Rails app.
16
+ class Component
17
+ def renderer
18
+ BootWheel.renderer
19
+ end
20
+
21
+ def helpers
22
+ BootWheel.helpers
23
+ end
24
+
25
+ def x
26
+ TagStub
27
+ end
28
+
29
+ class TagStub; end
30
+
31
+ def to_html
32
+ to_s
33
+ end
34
+ end
35
+
36
+ class Renderer
37
+ # TEMPORARY COMPATIBILITY SHIM - NOT INTENDED FOR REAL USE
38
+ # Might want to extract something "Official" into Little Wheels
39
+ # for testing outside a Rails app.
40
+ def self.render(template=nil,inline: nil, layout: nil, locals: {})
41
+ raise NotImplementedError unless template.nil?
42
+
43
+ ERB.new(inline, trim_mode: "-<>").result_with_hash(locals)
44
+ end
45
+
46
+ class HelpersStub
47
+ def self.capture
48
+ yield
49
+ end
50
+
51
+ def self.class_names(list)
52
+ list.join(" ")
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,4 @@
1
+ # HACK TO LET BootWheel run without Rails
2
+
3
+ require_relative "../boot_wheel"
4
+ require_relative "internals/renderer"
@@ -0,0 +1,13 @@
1
+ module BootWheel
2
+ class Page < BootWheel::Internals::Component
3
+ TEMPLATE = t("page.erb")
4
+
5
+ def initialize(&slot)
6
+ accepts_slot(slot)
7
+ end
8
+ end
9
+
10
+ def self.page(*a,**o,&b)
11
+ BootWheel::Page.new(*a,**o,&b)
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ # HACK TO LET BootWheel run with just actionpack, not a full Rails app
2
+
3
+ require "action_controller"
4
+ require 'action_view'
5
+
6
+ require_relative "../boot_wheel"
7
+ require_relative "internals/action_pack"
@@ -0,0 +1,36 @@
1
+ require_relative "internals/component"
2
+
3
+ module BootWheel
4
+ class Table < BootWheel::Internals::Component
5
+ TEMPLATE = t("table.erb")
6
+
7
+ def initialize(items:, style_props: [], fields: items.first.keys, **params)
8
+ @items = items
9
+ @style_props = style_props
10
+ @fields = normalize_fields(fields)
11
+ @params = params
12
+ end
13
+
14
+ attr_reader :items, :fields, :params
15
+
16
+ def applied_classes
17
+ helpers.class_names(["table"] + @style_props.map { |e| "table-#{e}"} + (params[:table_class] || []))
18
+ end
19
+
20
+ def normalize_fields(fields)
21
+ item_keys = @items.first.keys
22
+
23
+ fields.map.with_index do |e,i|
24
+ Hash === e ? e : { key: item_keys[i], label: e }
25
+ end
26
+ end
27
+
28
+ def field_with_key(key)
29
+ @fields.find { |e| e[:key] == key }
30
+ end
31
+ end
32
+
33
+ def self.table(*a,**o,&b)
34
+ BootWheel::Table.new(*a,**o,&b)
35
+ end
36
+ end
data/lib/boot_wheel.rb CHANGED
@@ -1,3 +1,15 @@
1
+ require "little_wheels"
2
+ require_relative "boot_wheel/table"
3
+ require_relative "boot_wheel/page"
4
+
1
5
  module BootWheel
2
6
  VERSION = "0.0.1"
7
+
8
+ def self.renderer
9
+ LittleWheels.renderer
10
+ end
11
+
12
+ def self.helpers
13
+ LittleWheels.helpers
14
+ end
3
15
  end
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Bootstrap demo</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
8
+ </head>
9
+ <body>
10
+ <div class="container"><%= c.slot %></div>
11
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1,26 @@
1
+ <table class="<%= c.applied_classes %>">
2
+ <thead>
3
+ <tr>
4
+ <% c.fields.each do |field| -%>
5
+ <% if field[:variant] -%>
6
+ <th scope="col" class="table-<%= field[:variant] %>"><%= field[:label] %></th>
7
+ <% else -%>
8
+ <th scope="col"><%= field[:label] %></th>
9
+ <% end -%>
10
+ <% end -%>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% c.items.each do |item| -%>
15
+ <tr>
16
+ <% item.each do |key, value| -%>
17
+ <% if c.field_with_key(key) && c.field_with_key(key)[:variant] -%>
18
+ <td class="table-<%= c.field_with_key(key)[:variant] %>"><%= value %></td>
19
+ <% else -%>
20
+ <td><%= value %></td>
21
+ <% end -%>
22
+ <% end -%>
23
+ </tr>
24
+ <% end -%>
25
+ </tbody>
26
+ </table>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: boot_wheel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory Brown
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-06 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: little_wheels
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.8
19
+ version: 0.0.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.8
26
+ version: 0.0.9
27
27
  description: Experimental component library built on top of Little Wheels, inspired
28
28
  by BootstrapVue
29
29
  email: gregory@practicingdeveloper.com
@@ -32,12 +32,23 @@ extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
34
  - LICENSE.md
35
+ - examples/demo.rb
36
+ - examples/index.html
35
37
  - lib/boot_wheel.rb
36
- homepage:
38
+ - lib/boot_wheel/internals/action_pack.rb
39
+ - lib/boot_wheel/internals/component.rb
40
+ - lib/boot_wheel/internals/renderer.rb
41
+ - lib/boot_wheel/offroad.rb
42
+ - lib/boot_wheel/page.rb
43
+ - lib/boot_wheel/rugged.rb
44
+ - lib/boot_wheel/table.rb
45
+ - templates/page.erb
46
+ - templates/table.erb
47
+ homepage:
37
48
  licenses:
38
- - MIT
49
+ - AGPLv3
39
50
  metadata: {}
40
- post_install_message:
51
+ post_install_message:
41
52
  rdoc_options: []
42
53
  require_paths:
43
54
  - lib
@@ -52,8 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
63
  - !ruby/object:Gem::Version
53
64
  version: '0'
54
65
  requirements: []
55
- rubygems_version: 3.0.3.1
56
- signing_key:
66
+ rubygems_version: 3.5.9
67
+ signing_key:
57
68
  specification_version: 4
58
69
  summary: BootWheel
59
70
  test_files: []