card-mod-format 0.11.0
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 +7 -0
- data/lib/card/format/css_format.rb +17 -0
- data/lib/card/format/csv_format.rb +19 -0
- data/lib/card/format/data_format.rb +6 -0
- data/lib/card/format/file_format.rb +8 -0
- data/lib/card/format/html_format.rb +45 -0
- data/lib/card/format/js_format.rb +17 -0
- data/lib/card/format/json_format.rb +24 -0
- data/lib/card/format/rss_format.rb +9 -0
- data/lib/card/format/text_format.rb +16 -0
- data/lib/card/format/xml_format.rb +13 -0
- data/lib/card/path.rb +127 -0
- data/set/all/active_card.rb +6 -0
- data/set/all/base.rb +137 -0
- data/set/all/css.rb +37 -0
- data/set/all/csv.rb +93 -0
- data/set/all/error.rb +79 -0
- data/set/all/export.rb +68 -0
- data/set/all/file.rb +9 -0
- data/set/all/frame.rb +53 -0
- data/set/all/haml.rb +75 -0
- data/set/all/head.rb +148 -0
- data/set/all/header.rb +62 -0
- data/set/all/header/header_wrap.haml +4 -0
- data/set/all/html_content.rb +168 -0
- data/set/all/html_content/labeled.haml +4 -0
- data/set/all/html_error.rb +193 -0
- data/set/all/html_error/debug_server_error.haml +1015 -0
- data/set/all/html_error/not_found.haml +7 -0
- data/set/all/html_error/server_error.haml +5 -0
- data/set/all/html_show.rb +53 -0
- data/set/all/html_title.rb +47 -0
- data/set/all/html_wrapper.rb +159 -0
- data/set/all/js.rb +10 -0
- data/set/all/json.rb +166 -0
- data/set/all/links.rb +149 -0
- data/set/all/menu.rb +129 -0
- data/set/all/meta_tags.haml +4 -0
- data/set/all/path.rb +78 -0
- data/set/all/rich_html.rb +4 -0
- data/set/all/rss.rb +76 -0
- data/set/all/text.rb +7 -0
- data/set/self/home.rb +9 -0
- data/set/type/html.rb +27 -0
- data/set/type/json.rb +41 -0
- data/set/type/number.rb +22 -0
- data/set/type/phrase.rb +5 -0
- data/set/type/plain_text.rb +9 -0
- data/set/type/toggle.rb +38 -0
- data/set/type/uri.rb +15 -0
- metadata +123 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ef6d2c7a456c6e35591c10a980bc93de5b970d87d88bc6af9518acc0f314a6cc
|
4
|
+
data.tar.gz: d1f9e4f0ce72e65f79d8bf35391e95954317647628cbb342eb7617304fe9966c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 53c0aef92bdd7fded5ff0a237d6d95aa1460a3612a9ec56a43e232be697ce627fffc69542ccdd3f2554d1f16df01f58459a85f575dc791981a906267b5d72c96
|
7
|
+
data.tar.gz: 74a7614d7a49a49e46fedc2f2064f523de67f98a88a9f06740dbe8f024edfa9a3dc3658a5e4cc4a7c0c137a8eebc783e3d9e4d6987aba658526d68d2d032992e
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
class Card
|
4
|
+
class Format
|
5
|
+
class CsvFormat < TextFormat
|
6
|
+
register :csv
|
7
|
+
|
8
|
+
def mime_type
|
9
|
+
"text/comma-separated-values"
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.view_caching?
|
13
|
+
# TODO: make view caching handle non-strings
|
14
|
+
# (specifically stub_render)
|
15
|
+
false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
# # require "card/content/diff"
|
4
|
+
|
5
|
+
class Card
|
6
|
+
class Format
|
7
|
+
# Main Format class for formatting card views in HTML
|
8
|
+
class HtmlFormat < Format
|
9
|
+
register :html
|
10
|
+
|
11
|
+
attr_accessor :options_need_save, :start_time, :skip_autosave
|
12
|
+
|
13
|
+
def main?
|
14
|
+
!@main.nil?
|
15
|
+
end
|
16
|
+
|
17
|
+
# is the current card the requested card?
|
18
|
+
def focal?
|
19
|
+
@focal ||= show_layout? ? main? : depth.zero?
|
20
|
+
end
|
21
|
+
|
22
|
+
def default_nest_view
|
23
|
+
# FIXME: not sure this makes sense as a rule...
|
24
|
+
card.rule(:default_html_view) || :titled
|
25
|
+
end
|
26
|
+
|
27
|
+
def default_item_view
|
28
|
+
:bar
|
29
|
+
end
|
30
|
+
|
31
|
+
def escape_literal literal
|
32
|
+
"<span>#{literal}</span>"
|
33
|
+
end
|
34
|
+
|
35
|
+
def mime_type
|
36
|
+
"text/html"
|
37
|
+
end
|
38
|
+
|
39
|
+
def final_render_call method
|
40
|
+
rendered = super
|
41
|
+
rendered.is_a?(Array) ? output(rendered) : rendered
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
class Card
|
4
|
+
class Format
|
5
|
+
class JsonFormat < DataFormat
|
6
|
+
register :json
|
7
|
+
|
8
|
+
def mime_type
|
9
|
+
"text/json"
|
10
|
+
end
|
11
|
+
|
12
|
+
def expand_stubs content
|
13
|
+
case content
|
14
|
+
when Hash
|
15
|
+
content.each { |k, v| content[k] = expand_stubs v }
|
16
|
+
when Array
|
17
|
+
content.map { |item| expand_stubs item }
|
18
|
+
else
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
class Card
|
4
|
+
class Format
|
5
|
+
class TextFormat < Format
|
6
|
+
register :text
|
7
|
+
register :txt
|
8
|
+
aliases["txt"] = "text"
|
9
|
+
|
10
|
+
def self.view_caching?
|
11
|
+
# probably overkill. problem was with email text message
|
12
|
+
false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/card/path.rb
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
class Card
|
2
|
+
# Generate standard card paths.
|
3
|
+
class Path
|
4
|
+
cattr_accessor :cast_params
|
5
|
+
self.cast_params = { slot: { hide: :array, show: :array, wrap: :array } }.freeze
|
6
|
+
|
7
|
+
def initialize card, opts
|
8
|
+
@card = card
|
9
|
+
@opts = opts
|
10
|
+
end
|
11
|
+
|
12
|
+
def render
|
13
|
+
new_cardtype || standard
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_reader :opts
|
19
|
+
|
20
|
+
def action
|
21
|
+
@action ||= opts.delete(:action)&.to_sym
|
22
|
+
end
|
23
|
+
|
24
|
+
def new_cardtype
|
25
|
+
return unless new_cardtype?
|
26
|
+
|
27
|
+
"#{action}/#{mark}#{query}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def new_cardtype?
|
31
|
+
return false unless action.in? %i[new type]
|
32
|
+
|
33
|
+
# "new" and "type" are not really an action and are only
|
34
|
+
# a valid value here for this path
|
35
|
+
opts[:mark].present?
|
36
|
+
end
|
37
|
+
|
38
|
+
def standard
|
39
|
+
base + extension + query
|
40
|
+
end
|
41
|
+
|
42
|
+
def base
|
43
|
+
explicit_action? ? action_base : mark
|
44
|
+
end
|
45
|
+
|
46
|
+
def action_base
|
47
|
+
mark.present? ? "#{action}/#{mark}" : "card/#{action}"
|
48
|
+
# the card/ prefix prevents interpreting action as cardname
|
49
|
+
end
|
50
|
+
|
51
|
+
def explicit_action?
|
52
|
+
action.in? %i[create update delete]
|
53
|
+
end
|
54
|
+
|
55
|
+
def mark
|
56
|
+
@mark ||= (markless? ? "" : interpret_mark)
|
57
|
+
end
|
58
|
+
|
59
|
+
def interpret_mark
|
60
|
+
name = handle_unknown do
|
61
|
+
opts[:mark] ? Card::Name[opts.delete(:mark)] : @card.name
|
62
|
+
end
|
63
|
+
name.url_key
|
64
|
+
end
|
65
|
+
|
66
|
+
def markless?
|
67
|
+
action == :create || no_mark?
|
68
|
+
end
|
69
|
+
|
70
|
+
def no_mark?
|
71
|
+
@no_mark ||= opts.delete :no_mark
|
72
|
+
end
|
73
|
+
|
74
|
+
def extension
|
75
|
+
extension = opts.delete :format
|
76
|
+
extension ? ".#{extension}" : ""
|
77
|
+
end
|
78
|
+
|
79
|
+
def query
|
80
|
+
query_opts = cast_path_hash opts
|
81
|
+
query_opts.empty? ? "" : "?#{query_opts.to_param}"
|
82
|
+
end
|
83
|
+
|
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
|
+
def handle_unknown
|
111
|
+
yield.tap do |name|
|
112
|
+
return name if name_specified? || name_standardish?(name) || Card.known?(name)
|
113
|
+
opts[:card] ||= {}
|
114
|
+
opts[:card][:name] = name
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def name_specified?
|
119
|
+
opts.dig :card, :name
|
120
|
+
end
|
121
|
+
|
122
|
+
# no name info will be lost by using url_key
|
123
|
+
def name_standardish? name
|
124
|
+
name.s == Card::Name.url_key_to_standard(name.url_key)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
data/set/all/base.rb
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
format do
|
2
|
+
def show view, args
|
3
|
+
view ||= :core
|
4
|
+
render! view, args.merge(main_nest_options)
|
5
|
+
end
|
6
|
+
|
7
|
+
# NAME VIEWS
|
8
|
+
|
9
|
+
view :name, compact: true, perms: :none do
|
10
|
+
name_variant safe_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def safe_name
|
14
|
+
card&.name
|
15
|
+
end
|
16
|
+
|
17
|
+
def name_variant name
|
18
|
+
voo.variant ? name.to_name.vary(voo.variant) : name
|
19
|
+
end
|
20
|
+
|
21
|
+
view(:key, compact: true, perms: :none) { card.key }
|
22
|
+
view(:linkname, compact: true, perms: :none) { card.name.url_key }
|
23
|
+
view(:url, compact: true, perms: :none) { card_url _render_linkname }
|
24
|
+
|
25
|
+
view :url_link, compact: true, perms: :none do
|
26
|
+
link_to_resource card_url(_render_linkname)
|
27
|
+
end
|
28
|
+
|
29
|
+
view :link, compact: true, perms: :none do
|
30
|
+
link_view
|
31
|
+
end
|
32
|
+
|
33
|
+
view :nav_link, compact: true, perms: :none do
|
34
|
+
link_view class: "nav-link"
|
35
|
+
end
|
36
|
+
|
37
|
+
def link_view opts={}
|
38
|
+
opts[:known] = card.known?
|
39
|
+
specify_type_in_link! opts
|
40
|
+
link_to_card card.name, _render_title, opts
|
41
|
+
end
|
42
|
+
|
43
|
+
def specify_type_in_link! opts
|
44
|
+
return if opts[:known] || !voo.type
|
45
|
+
opts[:path] = { card: { type: voo.type } }
|
46
|
+
end
|
47
|
+
|
48
|
+
view(:codename, compact: true) { card.codename.to_s }
|
49
|
+
view(:id, compact: true) { card.id }
|
50
|
+
view(:type, compact: true) { card.type_name }
|
51
|
+
|
52
|
+
# DATE VIEWS
|
53
|
+
|
54
|
+
view(:created_at, compact: true) { date_view card.created_at }
|
55
|
+
view(:updated_at, compact: true) { date_view card.updated_at }
|
56
|
+
view(:acted_at, compact: true) { date_view card.acted_at }
|
57
|
+
|
58
|
+
def date_view date
|
59
|
+
if voo.variant
|
60
|
+
date.strftime voo.variant
|
61
|
+
else
|
62
|
+
time_ago_in_words date
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# CONTENT VIEWS
|
67
|
+
|
68
|
+
view :raw do
|
69
|
+
structure_card&.content || _render_blank
|
70
|
+
end
|
71
|
+
|
72
|
+
def structure_card
|
73
|
+
return nil if voo.structure == true
|
74
|
+
voo.structure ? Card[voo.structure] : card
|
75
|
+
end
|
76
|
+
|
77
|
+
view :core, compact: true do
|
78
|
+
process_content _render_raw
|
79
|
+
end
|
80
|
+
|
81
|
+
view :content do
|
82
|
+
_render_core
|
83
|
+
end
|
84
|
+
|
85
|
+
view :open_content do
|
86
|
+
_render_core
|
87
|
+
end
|
88
|
+
|
89
|
+
view :one_line_content, compact: true do
|
90
|
+
with_nest_mode :compact do
|
91
|
+
Card::Content.smart_truncate _render_core
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
view :labeled_content, unknown: :mini_unknown do
|
96
|
+
render_core
|
97
|
+
end
|
98
|
+
|
99
|
+
view :titled_content, unknown: :blank do
|
100
|
+
render_core
|
101
|
+
end
|
102
|
+
|
103
|
+
view :blank, compact: true, perms: :none do
|
104
|
+
""
|
105
|
+
end
|
106
|
+
|
107
|
+
# note: content and open_content may look like they should be aliased to
|
108
|
+
# core, but it's important that they render core explicitly so that core view
|
109
|
+
# overrides work. the titled and labeled views below, however, are not
|
110
|
+
# intended for frequent override, so this shortcut is fine.
|
111
|
+
|
112
|
+
# NAME + CONTENT VIEWS
|
113
|
+
|
114
|
+
view :titled do
|
115
|
+
"#{card.name}\n\n#{_render_core}"
|
116
|
+
end
|
117
|
+
view :open, :titled
|
118
|
+
|
119
|
+
view :labeled do
|
120
|
+
"#{card.name}: #{_render_labeled_content}"
|
121
|
+
end
|
122
|
+
view :closed, :labeled
|
123
|
+
|
124
|
+
# SPECIAL VIEWS
|
125
|
+
|
126
|
+
view :array, cache: :never do
|
127
|
+
card.item_cards(limit: 0).map do |item_card|
|
128
|
+
subformat(item_card)._render_core
|
129
|
+
end.inspect
|
130
|
+
end
|
131
|
+
|
132
|
+
# DEPRECATED
|
133
|
+
view :naked do
|
134
|
+
Rails.logger.info "DEPRECATED: naked view (used with #{card.name} card)"
|
135
|
+
render_core
|
136
|
+
end
|
137
|
+
end
|