pfa 1.0.3 → 1.2.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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/assets/fr/PFA_ABSOLUTE_DATA.yaml +4 -4
- data/lib/pfa/img_builder.rb +1 -2
- data/lib/pfa/relative_pfa.rb +14 -0
- data/lib/pfa/relative_pfa_datatime.rb +18 -2
- data/lib/pfa/relative_pfa_node.rb +6 -2
- data/lib/pfa/table_builder.rb +112 -0
- data/lib/pfa/version.rb +1 -1
- data/lib/pfa.rb +1 -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: a58c95abe6fbc6bce5a654ee112527a19c9fe246e14131e91272080f993e82d7
|
4
|
+
data.tar.gz: 15ab845938f1ee991c159cca196eab2b769dfdc894e9554374d417952781c79e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f361f19a68751c35563dac9767a8cf290245d28da1c09d65483cfa08baf79ad3a181655d14f4f73ad75bad2832a395460fce216289b7148e446a749a92ea6cfa
|
7
|
+
data.tar.gz: 21b4806cff3f374c27c1c4dc7f72e59d5492b8d6dd283c74fcd7ba7ba912487ebceba5ec2924bdb84e6114d2eacc651b796f88d561afa3d0d03ad96876c40eab
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 1.2.0
|
4
|
+
|
5
|
+
* gestion des identifiants de PFA pour en avoir plusieurs dans le même dossier (peut aussi servir à faire plusieurs versions).
|
6
|
+
|
7
|
+
## 1.1.0
|
8
|
+
|
9
|
+
* Écriture de la table du paradigme de Field Augmenté, de travers.
|
10
|
+
|
3
11
|
## 1.0.3
|
4
12
|
|
5
13
|
* Isolation du LIB_FOLDER
|
@@ -87,7 +87,7 @@ nodes:
|
|
87
87
|
hname: 'DÉV. PART I'
|
88
88
|
abs_start: 1/4
|
89
89
|
abs_duration: 1/4
|
90
|
-
items: ['
|
90
|
+
items: ['action_1_part1', 'premier_tiers', 'cle_de_voute']
|
91
91
|
action_1_part1:
|
92
92
|
printed: false
|
93
93
|
drawn: false # pas sur le PFA
|
@@ -128,7 +128,7 @@ nodes:
|
|
128
128
|
hname: 'DÉV. PART II'
|
129
129
|
abs_start: 1/2
|
130
130
|
abs_duration: 1/4
|
131
|
-
items: ['
|
131
|
+
items: ['action_1_part2', 'second_tiers', 'crise', 'pivot2']
|
132
132
|
action_1_part2:
|
133
133
|
printed: false
|
134
134
|
drawn: false # pas sur le PFA
|
@@ -139,7 +139,7 @@ nodes:
|
|
139
139
|
description: "Pendant de la première action du développement, après la clé de voûte."
|
140
140
|
abs_start: 1/2 + 1/48 # p.e. 60 + 2,5 mn = 62,5 mn
|
141
141
|
abs_duration: null
|
142
|
-
|
142
|
+
second_tiers:
|
143
143
|
printed: true
|
144
144
|
drawn: true # sur le PFA
|
145
145
|
required: false
|
@@ -179,7 +179,7 @@ nodes:
|
|
179
179
|
hname: 'DÉNOUEMENT'
|
180
180
|
abs_start: 3/4
|
181
181
|
abs_duration: 1/4
|
182
|
-
items: ['
|
182
|
+
items: ['action_1_denouement', 'climax', 'desinence']
|
183
183
|
action_1_denouement:
|
184
184
|
printed: false
|
185
185
|
drawn: false # pas sur le PFA
|
data/lib/pfa/img_builder.rb
CHANGED
@@ -178,8 +178,7 @@ class ImgBuilder < AnyBuilder
|
|
178
178
|
|
179
179
|
# @return \String Chemin d'accès au fichier de l'image finale
|
180
180
|
def image_path
|
181
|
-
@image_path ||= File.expand_path(File.join('.',
|
182
|
-
# @image_path ||= File.expand_path(File.join('.','pfa.img'))
|
181
|
+
@image_path ||= File.expand_path(File.join('.',"pfa#{"_#{pfa.pfa_id}" if pfa.pfa_id}.jpg"))
|
183
182
|
end
|
184
183
|
|
185
184
|
# @private
|
data/lib/pfa/relative_pfa.rb
CHANGED
@@ -80,6 +80,18 @@ class RelativePFA
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
def node(node_key)
|
84
|
+
data[node_key]
|
85
|
+
end
|
86
|
+
|
87
|
+
# --- Predicate Methods ---
|
88
|
+
|
89
|
+
# @return true si le paradigme définit le noeud de clé +node_key+
|
90
|
+
#
|
91
|
+
def node?(node_key)
|
92
|
+
data.key?(node_key.to_sym)
|
93
|
+
end
|
94
|
+
|
83
95
|
# Test la pertinence de la définition de la clé +key+ et produit une
|
84
96
|
# erreur éclairante en cas de problème.
|
85
97
|
#
|
@@ -170,7 +182,9 @@ class RelativePFA
|
|
170
182
|
# --- Helper Methods ---
|
171
183
|
|
172
184
|
|
185
|
+
# --- Fixed Data ---
|
173
186
|
|
187
|
+
def pfa_id; data[:pfa_id] end
|
174
188
|
|
175
189
|
# --- Output Methods ---
|
176
190
|
|
@@ -7,14 +7,30 @@ class DataTime
|
|
7
7
|
|
8
8
|
attr_reader :pfa, :key
|
9
9
|
|
10
|
+
# @oaram pfa [PFA::RelativePFA]
|
11
|
+
#
|
12
|
+
# @param key [Symbol] La clé structurelle (:zero ou :end_time)
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# @param value [String|Integer|Hash]
|
16
|
+
# Dans valeur de cette donnée temps. Ça peut être soit un temps,
|
17
|
+
# soit une table contenant le temps et la description.
|
18
|
+
#
|
10
19
|
def initialize(pfa, key, value = nil)
|
11
20
|
@pfa = pfa
|
12
21
|
@key = key
|
13
|
-
@
|
22
|
+
@ini_value = value
|
23
|
+
case value
|
24
|
+
when Hash
|
25
|
+
@horloge = value[:t]||value[:time]||value[:horloge]
|
26
|
+
@description = value[:d]||value[:description]
|
27
|
+
else
|
28
|
+
@horloge = value
|
29
|
+
end
|
14
30
|
end
|
15
31
|
|
16
32
|
def time
|
17
|
-
@time ||= PFA::NTime.new(@
|
33
|
+
@time ||= PFA::NTime.new(@horloge, 0)
|
18
34
|
end
|
19
35
|
alias :start_at :time
|
20
36
|
|
@@ -10,8 +10,6 @@ class Node
|
|
10
10
|
|
11
11
|
attr_reader :pfa, :key
|
12
12
|
|
13
|
-
attr_reader :description
|
14
|
-
|
15
13
|
def initialize(pfa, key, value = nil)
|
16
14
|
@pfa = pfa
|
17
15
|
@key = key
|
@@ -22,6 +20,12 @@ class Node
|
|
22
20
|
pfa.img_builder.code_image_magick
|
23
21
|
end
|
24
22
|
|
23
|
+
def description(ensure_output = false)
|
24
|
+
@description || begin
|
25
|
+
ensure_output ? "" : nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
25
29
|
# --- MÉTHODES TEMPORELLES ---
|
26
30
|
|
27
31
|
# -- Temps relatifs --
|
@@ -0,0 +1,112 @@
|
|
1
|
+
#
|
2
|
+
# Module qui gère l'écriture du tableau du PFA, décrivant tous les
|
3
|
+
# éléments du PFA (même ceux qui ne sont pas affichés dans le
|
4
|
+
# graphique)
|
5
|
+
#
|
6
|
+
# Tous les éléments affichés sont les éléments printed: true dans les
|
7
|
+
# données absolues du PFA
|
8
|
+
#
|
9
|
+
module PFA
|
10
|
+
|
11
|
+
class RelativePFA
|
12
|
+
def print_full_table_in_pdf(pdf, **options)
|
13
|
+
table_builder.build(pdf, **options)
|
14
|
+
end
|
15
|
+
def table_builder
|
16
|
+
@table_builder ||= TableBuilder.new(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
class TableBuilder < AnyBuilder
|
20
|
+
|
21
|
+
# Méthode principale qui reçoit un Prawn::View et écrit dedans la
|
22
|
+
# table du PFA en respectant les +options+
|
23
|
+
#
|
24
|
+
# @param pdf [Prawn::View]
|
25
|
+
# @param options [Hash]
|
26
|
+
# :rotated Si true, on met la table de travers
|
27
|
+
# :font [Hash] La police à utiliser, contenant :name et :size
|
28
|
+
#
|
29
|
+
def build(pdf, **options)
|
30
|
+
|
31
|
+
# Penser à utiliser Prawn4book::PdfBook::NTable.safeize(str) pour
|
32
|
+
# escaper les mauvais caractères (sauf si inscription directe dans
|
33
|
+
# le livre)
|
34
|
+
|
35
|
+
table_width = pdf.bounds.height # car en travers
|
36
|
+
table_height = pdf.bounds.width # idem
|
37
|
+
quart_column = table_width / 4
|
38
|
+
data_table = {
|
39
|
+
width: table_width,
|
40
|
+
column_widths: [quart_column, quart_column, quart_column, quart_column],
|
41
|
+
cell_style: {
|
42
|
+
border_width: [0,1,0,1],
|
43
|
+
inline_format: true,
|
44
|
+
padding: [2, 5],
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
# -- Description des noeuds --
|
49
|
+
nodes = {expo:nil, dev_part1: nil, dev_part2: nil, denoue: nil}
|
50
|
+
{
|
51
|
+
exposition: :expo,
|
52
|
+
developpement_part1: :dev_part1,
|
53
|
+
developpement_part2: :dev_part2,
|
54
|
+
denouement: :denoue
|
55
|
+
}.each do |key_part, key_nodes|
|
56
|
+
nodes[key_nodes] = AbsolutePFA.data[:nodes][key_part][:items].collect do |node_key|
|
57
|
+
node_key = node_key.to_sym
|
58
|
+
# -- Si le paradigme définit ce noeud, on l'ajoute --
|
59
|
+
if pfa.node?(node_key)
|
60
|
+
node = pfa.send(node_key)
|
61
|
+
"<b>#{node.mark}</b> : #{node.description}"
|
62
|
+
end
|
63
|
+
end.compact.join(' | ')
|
64
|
+
end
|
65
|
+
|
66
|
+
data_lines = [
|
67
|
+
# -- Entête de table --
|
68
|
+
["EXPOSITION", "DÉV. PARTIE 1", "DÉV. PARTIE 2", "DÉNOUEMENT"],
|
69
|
+
# -- 2e ligne --
|
70
|
+
[
|
71
|
+
pfa.exposition&.description(true),
|
72
|
+
pfa.developpement_part1&.description(true),
|
73
|
+
pfa.developpement_part2&.description(true),
|
74
|
+
pfa.denouement&.description(true)
|
75
|
+
],
|
76
|
+
# -- 3e ligne --
|
77
|
+
[nodes[:expo], nodes[:dev_part1], nodes[:dev_part2], nodes[:denoue]]
|
78
|
+
]
|
79
|
+
|
80
|
+
#
|
81
|
+
# Une fonte est-elle définie ?
|
82
|
+
#
|
83
|
+
options.key?(:font) || options.merge!(font: {name:'Arial', size:8})
|
84
|
+
options[:font][:name] ||= 'Arial'
|
85
|
+
options[:font][:size] ||= 8
|
86
|
+
|
87
|
+
pdf.update do
|
88
|
+
font(options[:font][:name], **{size: options[:font][:size]})
|
89
|
+
if options[:rotated]
|
90
|
+
#
|
91
|
+
# Il faut écrire la table de travers
|
92
|
+
#
|
93
|
+
rotate(90, :origin => [bounds.width,bounds.height/2]) do
|
94
|
+
# text "La table complète du PFA"
|
95
|
+
table(data_lines, data_table) do |tb|
|
96
|
+
tb.row(0).style(borders:[:top, :left, :right], border_width:1, align: :center)
|
97
|
+
tb.row(-1).style(borders:[:bottom, :left, :right], border_width:1, padding_bottom: 5)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
else
|
101
|
+
#
|
102
|
+
# Tableau à l'endroit sur la page
|
103
|
+
#
|
104
|
+
# text "La table complète du PFA"
|
105
|
+
table(data_lines, data_table)
|
106
|
+
end
|
107
|
+
end #/pdf.update
|
108
|
+
end
|
109
|
+
|
110
|
+
end #/class TableBuilder
|
111
|
+
end #/class RelativePFA
|
112
|
+
end #/module PFA
|
data/lib/pfa/version.rb
CHANGED
data/lib/pfa.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pfa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PhilippePerret
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yaml
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/pfa/relative_pfa.rb
|
115
115
|
- lib/pfa/relative_pfa_datatime.rb
|
116
116
|
- lib/pfa/relative_pfa_node.rb
|
117
|
+
- lib/pfa/table_builder.rb
|
117
118
|
- lib/pfa/temporal_methods.rb
|
118
119
|
- lib/pfa/version.rb
|
119
120
|
- pfa.gemspec
|