card-mod-format 0.11.0 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef6d2c7a456c6e35591c10a980bc93de5b970d87d88bc6af9518acc0f314a6cc
4
- data.tar.gz: d1f9e4f0ce72e65f79d8bf35391e95954317647628cbb342eb7617304fe9966c
3
+ metadata.gz: e0ec4687a3f1ddc276d8f326e2bb80d2d30138d36c4032cb9e1caf1fa8e92f53
4
+ data.tar.gz: b21dc49fe93590a7eb083d141f0b92d4e4ffebcbf69175fc10b32a5e36407e01
5
5
  SHA512:
6
- metadata.gz: 53c0aef92bdd7fded5ff0a237d6d95aa1460a3612a9ec56a43e232be697ce627fffc69542ccdd3f2554d1f16df01f58459a85f575dc791981a906267b5d72c96
7
- data.tar.gz: 74a7614d7a49a49e46fedc2f2064f523de67f98a88a9f06740dbe8f024edfa9a3dc3658a5e4cc4a7c0c137a8eebc783e3d9e4d6987aba658526d68d2d032992e
6
+ metadata.gz: acc027016400a2ac9f6bfe6e64b14bba11e24fb0779e71215c4bef1685bf21b617c89d8dc7e7879644cf34442a7664f0399779629addd1ac3622d2a6d1c37e79
7
+ data.tar.gz: 18ecf41a28035e9630d0ec5a3a8f1a7570fa279e4af94e29bf8f11316e04b78b19dbd89a649b25e280bdeb12268b324e4a024f5d3b764b1c37d7b340104fc094
data/lib/card/path.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  class Card
2
2
  # Generate standard card paths.
3
3
  class Path
4
- cattr_accessor :cast_params
5
- self.cast_params = { slot: { hide: :array, show: :array, wrap: :array } }.freeze
4
+ include CastParams
6
5
 
7
6
  def initialize card, opts
8
7
  @card = card
@@ -60,7 +59,7 @@ class Card
60
59
  name = handle_unknown do
61
60
  opts[:mark] ? Card::Name[opts.delete(:mark)] : @card.name
62
61
  end
63
- name.url_key
62
+ (name&.url_key).to_s
64
63
  end
65
64
 
66
65
  def markless?
@@ -81,40 +80,19 @@ class Card
81
80
  query_opts.empty? ? "" : "?#{query_opts.to_param}"
82
81
  end
83
82
 
84
- # normalizes certain path opts to specified data types
85
- def cast_path_hash hash, cast_hash=nil
86
- return hash unless hash.is_a? Hash
87
- cast_each_path_hash hash, (cast_hash || self.class.cast_params)
88
- hash
89
- end
90
-
91
- def cast_each_path_hash hash, cast_hash
92
- hash.each do |key, value|
93
- next unless (cast_to = cast_hash[key])
94
- hash[key] = cast_path_value value, cast_to
95
- end
96
- end
97
-
98
- def cast_path_value value, cast_to
99
- if cast_to.is_a? Hash
100
- cast_path_hash value, cast_to
101
- else
102
- send "cast_path_value_as_#{cast_to}", value
103
- end
104
- end
105
-
106
- def cast_path_value_as_array value
107
- Array.wrap value
108
- end
109
-
110
83
  def handle_unknown
111
84
  yield.tap do |name|
112
- return name if name_specified? || name_standardish?(name) || Card.known?(name)
85
+ return name if name.nil? || known_name?(name)
86
+
113
87
  opts[:card] ||= {}
114
88
  opts[:card][:name] = name
115
89
  end
116
90
  end
117
91
 
92
+ def known_name? name
93
+ name_specified? || name_standardish?(name) || Card.known?(name)
94
+ end
95
+
118
96
  def name_specified?
119
97
  opts.dig :card, :name
120
98
  end
@@ -0,0 +1,36 @@
1
+ class Card
2
+ class Path
3
+ cattr_accessor :cast_params
4
+ self.cast_params = { slot: { hide: :array, show: :array, wrap: :array } }.freeze
5
+
6
+ # normalizes certain path opts to specified data types
7
+ module CastParams
8
+ private
9
+
10
+ def cast_path_hash hash, cast_hash=nil
11
+ return hash unless hash.is_a? Hash
12
+ cast_each_path_hash hash, (cast_hash || self.class.cast_params)
13
+ hash
14
+ end
15
+
16
+ def cast_each_path_hash hash, cast_hash
17
+ hash.each do |key, value|
18
+ next unless (cast_to = cast_hash[key])
19
+ hash[key] = cast_path_value value, cast_to
20
+ end
21
+ end
22
+
23
+ def cast_path_value value, cast_to
24
+ if cast_to.is_a? Hash
25
+ cast_path_hash value, cast_to
26
+ else
27
+ send "cast_path_value_as_#{cast_to}", value
28
+ end
29
+ end
30
+
31
+ def cast_path_value_as_array value
32
+ Array.wrap value
33
+ end
34
+ end
35
+ end
36
+ end
data/set/all/demo.rb ADDED
@@ -0,0 +1,36 @@
1
+ format :html do
2
+ view :demo do
3
+ frame do
4
+ [view_select, wrap_with(:div, view_demo, class: "demo-slot")]
5
+ end
6
+ end
7
+
8
+ view :view_list do
9
+ %i[bar box info_bar open closed titled labeled content content_panel].map do |v|
10
+ wrap_with :p, [content_tag(:h3, v), render(v, show: :menu)]
11
+ end.flatten.join ""
12
+ end
13
+
14
+ def demo_view
15
+ Env.params[:demo_view] || :core
16
+ end
17
+
18
+ def view_demo
19
+ wrap(true) do
20
+ render demo_view
21
+ end
22
+ end
23
+
24
+ def view_select
25
+ card_form :get, success: { view: :demo } do
26
+ select_tag :demo_view,
27
+ options_for_select(all_views, demo_view),
28
+ class: "_submit-on-select"
29
+ end
30
+ end
31
+
32
+ def all_views
33
+ Card::Set::Format::AbstractFormat::ViewDefinition
34
+ .views.slice(*self.class.ancestors).values.map(&:keys).flatten.uniq
35
+ end
36
+ end
data/set/all/error.rb CHANGED
@@ -56,24 +56,17 @@ end
56
56
 
57
57
  format :json do
58
58
  view :errors do
59
- format_error error_list
59
+ {
60
+ error_status: error_status,
61
+ errors: card.errors.each_with_object({}) { |e, h| h[e.attribute] = e.message }
62
+ }
60
63
  end
61
64
 
62
65
  view :server_error, :errors
63
66
  view :denial, :errors
64
67
  view :not_found, :errors
65
-
66
68
  view :bad_address do
67
- format_error super()
68
- end
69
-
70
- def format_error error
71
- { error_status: error_status, errors: error }
72
- end
73
-
74
- def error_list
75
- card.errors.each_with_object([]) do |(field, message), list|
76
- list << { field: field, message: message }
77
- end
69
+ card.errors.add :address, super()
70
+ render_error
78
71
  end
79
72
  end
data/set/all/rich_html.rb CHANGED
@@ -1,4 +1,16 @@
1
1
  format :html do
2
2
  delegate :class_up, :class_down, :with_class_up, :without_upped_class, :classy,
3
3
  to: :voo
4
+
5
+ view :type, unknown: true do
6
+ link_to_card card.type_card, nil, class: "cardtype"
7
+ end
8
+
9
+ view :type_info do
10
+ return unless card.type_code != :basic
11
+
12
+ wrap_with :span, class: "type-info float-right" do
13
+ link_to_card card.type_name, nil, class: "navbar-link"
14
+ end
15
+ end
4
16
  end
@@ -0,0 +1,89 @@
1
+ format :html do
2
+ view :type, unknown: true do
3
+ link_to_card card.type_card, nil, class: "cardtype"
4
+ end
5
+
6
+ def type_formgroup args={}
7
+ if card.cards_of_type_exist?
8
+ wrap_with :div, tr(:cards_exist, cardname: safe_name)
9
+ else
10
+ super
11
+ end
12
+ end
13
+
14
+ view :add_link do
15
+ add_link
16
+ end
17
+
18
+ view :add_button do
19
+ add_link class: "btn btn-secondary"
20
+ end
21
+
22
+ def add_link opts={}
23
+ voo.title ||= tr(:add_card, cardname: safe_name)
24
+ link_to render_title, add_link_opts(opts)
25
+ end
26
+
27
+ def add_link_opts opts
28
+ modal = opts.delete :modal
29
+ if modal.nil? || modal
30
+ modal_link_opts opts.merge(path: add_path(:new_in_modal))
31
+ else
32
+ opts.merge path: add_path(:new)
33
+ end
34
+ end
35
+
36
+ view :add_url do
37
+ card_url _render_add_path
38
+ end
39
+
40
+ def add_path view
41
+ path_args = { mark: card.name }
42
+ process_voo_params(path_args) if voo.params
43
+ if view == :new
44
+ path_args[:action] = :new
45
+ else
46
+ path_args[:action] = :type
47
+ path_args[:view] = view
48
+ end
49
+ path path_args
50
+ end
51
+
52
+ # don't cache because it depends on update permission for another card
53
+ view :configure_link, cache: :never, perms: ->(fmt) { fmt.can_configure? } do
54
+ configure_link
55
+ end
56
+
57
+ def can_configure?
58
+ Card.fetch(card, :type, :structure, new: {}).ok? :update
59
+ end
60
+
61
+ view :configure_button, cache: :never,
62
+ denial: :blank,
63
+ perms: ->(fmt) { fmt.can_configure? } do
64
+ configure_link "btn btn-secondary"
65
+ end
66
+
67
+ def configure_link css_class=nil
68
+ return "" unless Card.fetch(card, :type, :structure, new: {}).ok? :update
69
+
70
+ voo.title ||= tr(:configure_card, cardname: safe_name.pluralize)
71
+ title = _render_title
72
+ link_to_card card, title,
73
+ path: { view: :bridge,
74
+ bridge: { tab: :rules_tab },
75
+ set: Card::Name[safe_name, :type] },
76
+ class: css_classes("configure-type-link ml-3", css_class)
77
+ end
78
+
79
+ private
80
+
81
+ def process_voo_params path_args
82
+ context = ((@parent&.card) || card).name
83
+ Rack::Utils.parse_nested_query(voo.params).each do |key, value|
84
+ value = value.to_name.absolute(context) if value
85
+ key = key.to_name.absolute(context)
86
+ path_args[key] = value
87
+ end
88
+ end
89
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-24 00:00:00.000000000 Z
13
+ date: 2021-03-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,28 +18,28 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.101.0
21
+ version: 1.101.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.101.0
28
+ version: 1.101.1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: card-mod-content
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.11.0
35
+ version: 0.11.1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.11.0
42
+ version: 0.11.1
43
43
  description: ''
44
44
  email:
45
45
  - info@decko.org
@@ -58,10 +58,12 @@ files:
58
58
  - lib/card/format/text_format.rb
59
59
  - lib/card/format/xml_format.rb
60
60
  - lib/card/path.rb
61
+ - lib/card/path/cast_params.rb
61
62
  - set/all/active_card.rb
62
63
  - set/all/base.rb
63
64
  - set/all/css.rb
64
65
  - set/all/csv.rb
66
+ - set/all/demo.rb
65
67
  - set/all/error.rb
66
68
  - set/all/export.rb
67
69
  - set/all/file.rb
@@ -89,6 +91,7 @@ files:
89
91
  - set/all/rss.rb
90
92
  - set/all/text.rb
91
93
  - set/self/home.rb
94
+ - set/type/cardtype.rb
92
95
  - set/type/html.rb
93
96
  - set/type/json.rb
94
97
  - set/type/number.rb