glib-web 4.10.1 → 4.10.2
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 +4 -4
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
- data/app/helpers/glib/app_feature_support_helper.rb +0 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
- data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
- data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
- data/app/helpers/glib/json_ui/view_builder/panels.rb +7 -0
- data/app/models/glib/active_storage/attachment.rb +0 -0
- data/app/models/glib/active_storage/blob.rb +0 -0
- data/app/models/glib/dynamic_text_record.rb +0 -0
- data/app/models/glib/text.rb +0 -0
- data/app/validators/email_typo_validator.rb +0 -0
- data/app/validators/email_validator.rb +0 -0
- data/app/validators/url_validator.rb +0 -0
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/bulk_edit_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +45 -40
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/selects.json.jbuilder +7 -2
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/panel_content.json.jbuilder +65 -25
- data/app/views/json_ui/garage/test_page/form.json.jbuilder +5 -5
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
- data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
- data/lib/generators/glib/install_generator.rb +0 -0
- data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
- data/lib/generators/templates/database.yml +0 -0
- data/lib/generators/templates/dynamic_text.rb +0 -0
- data/lib/glib/dynamic_text/config.rb +0 -0
- data/lib/glib/dynamic_text.rb +0 -0
- data/lib/glib/json_crawler/action_crawler.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
- data/lib/glib/json_crawler/coverage.rb +0 -0
- data/lib/glib/json_crawler/router.rb +2 -0
- data/lib/glib/value.rb +0 -0
- data/lib/glib/version.rb +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 40fb8120f293f1162be2b6027432444a35b7b321f0db95a6efbcd8d7a52b964c
|
|
4
|
+
data.tar.gz: 839a67107c2a77d66fd0ad27dcc8cfb5e77f0754609f609447ec030f2357f07d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0e2d195b6f33253b5d2ab3ec2df96cf00d62d2fd56bf08d80f25577ad09526561006391b3c2ce370e80ce2ab18510b468dfa5b0ae46c72483feee395eace6a40
|
|
7
|
+
data.tar.gz: 1bc81f15016ee532f0c9395d35318a487807fa5854a546796772dedeaee6edae0183881b997c9495e1a0a044bcb773103794c01b06642c202f3fe72a036a722b
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -572,6 +572,13 @@ class Glib::JsonUi::ViewBuilder
|
|
|
572
572
|
# end
|
|
573
573
|
end
|
|
574
574
|
|
|
575
|
+
class Pagination < View
|
|
576
|
+
int :length
|
|
577
|
+
int :value
|
|
578
|
+
action :onChange
|
|
579
|
+
string :paramNameForFieldName
|
|
580
|
+
end
|
|
581
|
+
|
|
575
582
|
module ModelPanel
|
|
576
583
|
attr_reader :model_name # See Panels::Form.field_name
|
|
577
584
|
attr_reader :assoc_order_index
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/app/models/glib/text.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -28,7 +28,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
|
28
28
|
template.fields_text width: 'matchParent', name: 'question', label: 'Question', placeholder: 'Question'
|
|
29
29
|
|
|
30
30
|
form.panels_responsive id: 'responsive_{{entry_index}}', childViews: ->(column) do
|
|
31
|
-
options = [:rating, :yes_no]
|
|
31
|
+
options = [:rating, :yes_no, :choices]
|
|
32
32
|
template.fields_select \
|
|
33
33
|
width: 'matchParent',
|
|
34
34
|
name: 'type',
|
|
@@ -36,56 +36,61 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
|
36
36
|
placeholder: 'Answer Type',
|
|
37
37
|
options: options.map { |o| { text: o.to_s.humanize, value: o } },
|
|
38
38
|
onChangeAndLoad: ->(action) do
|
|
39
|
-
action.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
action.runMultiple childActions: ->(multiple) do
|
|
40
|
+
multiple.logics_set \
|
|
41
|
+
cacheData: true, # This is so that the the new data is retained when the `dynamicGroup` gets re-rendered.
|
|
42
|
+
debug: true,
|
|
43
|
+
targetId: 'responsive_{{entry_index}}', dataBuilder: ->(set) do
|
|
44
|
+
set.panels_responsive width: 'matchParent', accessory: ->(accessory) do
|
|
45
|
+
accessory.footer childViews: ->(footer) do
|
|
46
|
+
footer.fields_check \
|
|
47
|
+
width: 'matchParent',
|
|
48
|
+
id: 'check_{{entry_index}}',
|
|
49
|
+
name: 'enabled',
|
|
50
|
+
label: 'Enable',
|
|
51
|
+
checkValue: true
|
|
52
|
+
|
|
53
|
+
footer.panels_split width: 'matchParent', content: ->(split) do
|
|
54
|
+
split.right childViews: ->(right) do
|
|
55
|
+
right.label text: 'This should be right-aligned'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end, onSet: ->(subaction) do
|
|
61
|
+
subaction.logics_set \
|
|
62
|
+
targetId: 'check_{{entry_index}}',
|
|
63
|
+
conditionalData: {
|
|
64
|
+
value: {
|
|
65
|
+
"==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'rating']
|
|
66
|
+
}
|
|
67
|
+
}
|
|
50
68
|
end
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
69
|
+
|
|
70
|
+
multiple.logics_set \
|
|
71
|
+
targetId: 'choices_panel',
|
|
72
|
+
debug: true,
|
|
55
73
|
conditionalData: {
|
|
56
|
-
|
|
57
|
-
"==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, '
|
|
74
|
+
displayed: {
|
|
75
|
+
"==": [{ "var": 'user[evaluation][{{entry_index}}][type]' }, 'choices']
|
|
58
76
|
}
|
|
59
77
|
}
|
|
60
78
|
end
|
|
61
|
-
|
|
62
|
-
# action.components_findClosest view: 'panels/responsive', onFind: ->(find) do
|
|
63
|
-
# find.logics_set dataBuilder: ->(set) do
|
|
64
|
-
# set.panels_responsive accessory: ->(accessory) do
|
|
65
|
-
# accessory.footer childViews: ->(footer) do
|
|
66
|
-
# # TODO: Is there a way to only show this if the selected option is "rating".
|
|
67
|
-
# # I.e. `showIf: { "==": [{ "var": 'user[evaluation][{{index}}][type]' }, 'rating'] }`
|
|
68
|
-
# footer.fields_check \
|
|
69
|
-
# width: 'matchParent',
|
|
70
|
-
# name: 'enabled',
|
|
71
|
-
# label: 'Enable',
|
|
72
|
-
# checkValue: '1'
|
|
73
|
-
# end
|
|
74
|
-
# end
|
|
75
|
-
# end
|
|
76
|
-
# end
|
|
77
79
|
end
|
|
78
80
|
end, accessory: ->(accessory) do
|
|
79
81
|
accessory.footer childViews: ->(footer) do
|
|
82
|
+
|
|
80
83
|
end
|
|
81
84
|
end
|
|
82
85
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
template.panels_vertical id: 'choices_panel', childViews: ->(vertical) do
|
|
87
|
+
(1..5).each do |i|
|
|
88
|
+
vertical.fields_text \
|
|
89
|
+
width: 'matchParent',
|
|
90
|
+
name: "choices[#{i}]",
|
|
91
|
+
label: "Choice #{i}"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
89
94
|
|
|
90
95
|
template.spacer height: 14
|
|
91
96
|
end
|
|
File without changes
|
|
File without changes
|
|
@@ -17,13 +17,16 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
form.panels_responsive childViews: ->(column) do
|
|
20
|
+
options = languages.map do |k, v|
|
|
21
|
+
{ value: k, text: v }
|
|
22
|
+
end
|
|
20
23
|
form.fields_select \
|
|
21
24
|
name: 'user[city]',
|
|
22
25
|
width: 'matchParent',
|
|
23
26
|
clearable: true,
|
|
24
27
|
label: 'City1',
|
|
25
28
|
placeholder: 'This is a placeholder',
|
|
26
|
-
options:
|
|
29
|
+
options: options,
|
|
27
30
|
value: 'canberra',
|
|
28
31
|
onChange: ->(action) do
|
|
29
32
|
action.components_findClosest view: 'panels/responsive', onFind: ->(find) do
|
|
@@ -47,11 +50,13 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
|
47
50
|
|
|
48
51
|
form.spacer height: 6
|
|
49
52
|
|
|
53
|
+
options = languages.map { |k, v| { value: k, text: v, deselect: [-1] } }
|
|
54
|
+
options << { value: -1, text: 'None of the above', deselect: languages.keys }
|
|
50
55
|
form.fields_select \
|
|
51
56
|
name: 'user[cities][]',
|
|
52
57
|
width: 'matchParent',
|
|
53
58
|
label: 'Cities',
|
|
54
|
-
options:
|
|
59
|
+
options: options,
|
|
55
60
|
value: ['melbourne', 'sydney'],
|
|
56
61
|
multiple: true,
|
|
57
62
|
onChange: ->(action) do
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -3,34 +3,74 @@ json.title 'Tables'
|
|
|
3
3
|
page = json_ui_page json
|
|
4
4
|
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
5
|
|
|
6
|
-
page.
|
|
7
|
-
->(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
|
+
scroll.panels_form childViews: ->(form) do
|
|
8
|
+
form.panels_table styleClass: 'table--grid', sections: [
|
|
9
|
+
->(section) do
|
|
10
|
+
section.header cellViews: ->(header) do
|
|
11
|
+
header.panels_horizontal childViews: ->(horizontal) do
|
|
12
|
+
horizontal.fields_check name: 'check_all', checkValue: true, onChange: ->(action) do
|
|
13
|
+
action.runMultiple childActions: ->(multiple) do
|
|
14
|
+
check_ids = (0..2).map { |i| "item_#{i}" }
|
|
15
|
+
# action.logics_set targetIds: check_ids, conditionalData: {
|
|
16
|
+
# value: { 'var': 'check_all' }
|
|
17
|
+
# }
|
|
18
|
+
check_ids.each_with_index do |check_id, index|
|
|
19
|
+
record_id = "id_#{index}"
|
|
20
|
+
multiple.logics_set targetId: check_id, conditionalData: {
|
|
21
|
+
value: { "if": [ { 'var': 'check_all' }, record_id, nil ]}
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
header.label text: 'Vertical'
|
|
28
|
+
header.label text: 'Horizontal'
|
|
29
|
+
header.label text: 'Unordered List'
|
|
21
30
|
end
|
|
22
31
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
items = [1, 2, 3]
|
|
33
|
+
section.rows objects: items, builder: ->(row, item, index) do
|
|
34
|
+
row.default colStyles: [{ width: 200, backgroundColor: '#eeeeee' }], cellViews: ->(cell) do
|
|
35
|
+
cell.panels_horizontal childViews: ->(horizontal) do
|
|
36
|
+
horizontal.fields_check \
|
|
37
|
+
id: "item_#{index}",
|
|
38
|
+
name: 'user[items][]',
|
|
39
|
+
checkValue: "id_#{index}", # In the real-world, this is going to be the ID of a DB record.
|
|
40
|
+
onChangeAndLoad: ->(action) do
|
|
41
|
+
# TODO: Fix fields_check so it can support arrays
|
|
42
|
+
action.logics_set targetId: 'submit_button', conditionalData: {
|
|
43
|
+
text: {
|
|
44
|
+
'printf': [
|
|
45
|
+
'Submit {0} items',
|
|
46
|
+
{ 'countNonNull': [{ 'var': 'user[items][]' }] }
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
cell.panels_vertical childViews: ->(vertical) do
|
|
54
|
+
vertical.h3 text: "Title #{item}"
|
|
55
|
+
vertical.spacer height: 4
|
|
56
|
+
vertical.label text: "Subtitle #{item}"
|
|
57
|
+
end
|
|
28
58
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
59
|
+
cell.panels_horizontal childViews: ->(vertical) do
|
|
60
|
+
vertical.label text: "Left #{item}"
|
|
61
|
+
vertical.spacer width: 10
|
|
62
|
+
vertical.label text: "Right #{item}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
cell.panels_ul childViews: ->(ul) do
|
|
66
|
+
ul.label text: "Item A#{item}"
|
|
67
|
+
ul.label text: "Item B#{item}"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
32
70
|
end
|
|
33
71
|
end
|
|
34
|
-
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
form.fields_submit id: 'submit_button', text: 'Submit'
|
|
35
75
|
end
|
|
36
|
-
|
|
76
|
+
end
|
|
@@ -23,9 +23,9 @@ page.body childViews: ->(body) do
|
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
hori.spacer width: 4
|
|
26
|
-
hori.button text: 'logics/set', onClick: ->(action) do
|
|
27
|
-
|
|
28
|
-
end
|
|
26
|
+
# hori.button text: 'logics/set', onClick: ->(action) do
|
|
27
|
+
# action.logics_set targetId: 'date', conditionalData: { value: { "+": [{ "var": ['user[date]'] }, 60 * 60 * 24 * 3] } }
|
|
28
|
+
# end
|
|
29
29
|
hori.spacer width: 4
|
|
30
30
|
hori.button text: 'components/replace', onClick: ->(action) do
|
|
31
31
|
action.runMultiple childActions: ->(saction) do
|
|
@@ -73,8 +73,8 @@ page.body childViews: ->(body) do
|
|
|
73
73
|
validation = { required: { message: 'Required' } }
|
|
74
74
|
options = ['option1', 'option2', 'option3', 'option4'].map { |option| { 'text'=> option.humanize, 'value' => option } }
|
|
75
75
|
|
|
76
|
-
form.fields_date width: 'matchParent', name: 'user[date]', id: 'date', value: Date.new(2024, 7, 24), validation: validation
|
|
77
|
-
form.hr width: 'matchParent'
|
|
76
|
+
# form.fields_date width: 'matchParent', name: 'user[date]', id: 'date', value: Date.new(2024, 7, 24), validation: validation
|
|
77
|
+
# form.hr width: 'matchParent'
|
|
78
78
|
form.fields_select clearable: true, multiple: true, width: 'matchParent', name: 'user[select][]', id: 'select', options: options, value: ['option1', 'option2'], validation: validation
|
|
79
79
|
form.hr width: 'matchParent'
|
|
80
80
|
form.panels_flow innerPadding: { bottom: 0 }, width: 'matchParent', id: 'select1', childViews: ->(flow) do
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/glib/dynamic_text.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -21,6 +21,8 @@ module Glib
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def assert_target_ids_exist(args)
|
|
24
|
+
# This saves targetId so that later we can check to make sure that it indeed exists
|
|
25
|
+
# within the page.
|
|
24
26
|
if (target_ids = args['targetIds'])
|
|
25
27
|
target_ids.each do |target_id|
|
|
26
28
|
@visitor.defer_action(nil, target_id)
|
data/lib/glib/value.rb
CHANGED
|
File without changes
|
data/lib/glib/version.rb
CHANGED
|
File without changes
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: glib-web
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.10.
|
|
4
|
+
version: 4.10.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ''
|
|
@@ -388,7 +388,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
388
388
|
- !ruby/object:Gem::Version
|
|
389
389
|
version: '0'
|
|
390
390
|
requirements: []
|
|
391
|
-
|
|
391
|
+
rubyforge_project:
|
|
392
|
+
rubygems_version: 2.7.6
|
|
392
393
|
signing_key:
|
|
393
394
|
specification_version: 4
|
|
394
395
|
summary: ''
|