twb 5.2.1 → 5.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/bin/twb.rb +1 -0
  3. data/lib/twb.rb +1 -1
  4. data/lib/twb/{twbtest.rb → TwbTest.rb} +0 -0
  5. data/lib/twb/analysis/{annotatedfieldscsvemitter.rb → AnnotatedFieldsCSVEmitter.rb} +0 -0
  6. data/lib/twb/analysis/{calculatedfields/csvemitter.rb → CalculatedFields/CSVEmitter.rb} +0 -0
  7. data/lib/twb/analysis/{calculatedfields/calculatedfieldsanalyzer.rb → CalculatedFields/CalculatedFieldsAnalyzer.rb} +0 -0
  8. data/lib/twb/analysis/{calculatedfields/markdownemitter.rb → CalculatedFields/MarkdownEmitter.rb} +0 -0
  9. data/lib/twb/analysis/{calculatedfields → CalculatedFields}/dotanalyzer.rb +8 -3
  10. data/lib/twb/analysis/{calculatedfields → CalculatedFields}/fieldsaliasesanalyzer.rb +0 -0
  11. data/lib/twb/analysis/{calculatedfields → CalculatedFields}/groupfieldsanalyzer.rb +0 -0
  12. data/lib/twb/analysis/{calculatedfields → CalculatedFields}/t.rb +0 -0
  13. data/lib/twb/analysis/{datasources/datasourcefieldscsvemitter.rb → DataSources/DataSourceFieldsCSVEmitter.rb} +0 -0
  14. data/lib/twb/analysis/{datasources/datasourcetablefieldscsvemitter.rb → DataSources/DataSourceTableFieldsCSVEmitter.rb} +0 -0
  15. data/lib/twb/analysis/{datasources → DataSources}/categoricalcolorcodinganalyzer.rb +0 -0
  16. data/lib/twb/analysis/{datasources → DataSources}/datasourcefieldsanalyzer.rb +2 -0
  17. data/lib/twb/analysis/{datasources → DataSources}/datasourcefilesanalyzer.rb +0 -0
  18. data/lib/twb/analysis/{datasources → DataSources}/datasourceoriginsanalyzer.rb +0 -0
  19. data/lib/twb/analysis/{datasources → DataSources}/datasourcesenumerator.rb +0 -0
  20. data/lib/twb/analysis/{datasources → DataSources}/datasourceslocationsanalyzer.rb +0 -0
  21. data/lib/twb/analysis/{datasources → DataSources}/datasourcetablefieldsanalyzer.rb +0 -0
  22. data/lib/twb/analysis/{datasources → DataSources}/extractsanalyzer.rb +0 -0
  23. data/lib/twb/analysis/{datasources → DataSources}/fieldsaliasesanalyzer.rb +0 -0
  24. data/lib/twb/analysis/{datasources → DataSources}/googlesheetdatasourcesanalyzer.rb +0 -0
  25. data/lib/twb/analysis/{datasources → DataSources}/parametersanalyzer.rb +0 -0
  26. data/lib/twb/analysis/{documentedfieldscsvemitter.rb → DocumentedFieldsCSVEmitter.rb} +0 -0
  27. data/lib/twb/analysis/{documentedfieldsmarkdownemitter.rb → DocumentedFieldsMarkdownEmitter.rb} +0 -0
  28. data/lib/twb/analysis/{sheets/worksheetdatastructurecsvemitter.rb → Sheets/WorksheetDataStructureCSVEmitter.rb} +0 -0
  29. data/lib/twb/analysis/{sheets → Sheets}/analyzedashboardsheets.rb +0 -0
  30. data/lib/twb/analysis/{sheets → Sheets}/dashboardsummarizer.rb +0 -0
  31. data/lib/twb/analysis/{sheets → Sheets}/dashsheetsanalyzer.rb +0 -0
  32. data/lib/twb/analysis/{sheets → Sheets}/sheetfieldsanalyzer.rb +0 -0
  33. data/lib/twb/analysis/{sheets → Sheets}/sheetfiltersanalyzer.rb +0 -0
  34. data/lib/twb/analysis/{sheets → Sheets}/sheetfiltersanalyzera.rb +0 -0
  35. data/lib/twb/analysis/{sheets → Sheets}/sheetsintooltipanalyzer.rb +0 -0
  36. data/lib/twb/analysis/{sheets → Sheets}/sheetsourcesanalyzer.rb +0 -0
  37. data/lib/twb/analysis/{sheets → Sheets}/worksheetsummarizer.rb +0 -0
  38. data/lib/twb/columnfield.rb +75 -25
  39. data/lib/twb/countNodes.rb +98 -0
  40. data/lib/twb/datasource.rb +20 -6
  41. data/lib/twb/{finddsfields.rb → findDSFields.rb} +0 -0
  42. data/lib/twb/{identifyfields.rb → identifyFields.rb} +0 -0
  43. data/lib/twb/quickfilter.rb +1 -1
  44. data/lib/twb/util/{dotfilerenderer.rb → dotFileRenderer.rb} +0 -0
  45. data/lib/twb/util/{ftppublisher.rb → ftpPublisher.rb} +0 -0
  46. data/lib/twb/util/{joinutilities.rb → joinUtilities.rb} +0 -0
  47. data/lib/twb/util/{twbdashsheetdatadotbuilder.rb → twbDashSheetDataDotBuilder.rb} +0 -0
  48. data/lib/twb/util/{twbdashsheetdatadotrenderer.rb → twbDashSheetDataDotRenderer.rb} +0 -0
  49. data/lib/twb/util/{twbdashessheetdatadotbuilder.rb → twbDashesSheetDataDotBuilder.rb} +0 -0
  50. metadata +53 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 786d3cb3bde8d6d6db0ee5c4063e998df008b5ca1354ba8fb4fc77c06aa7e10d
4
- data.tar.gz: f9e73b1494d4d3946749f03e045caf6db221d4750ac12d99a5af037a77ca955a
3
+ metadata.gz: 8286dfd0e2b2e3db602618786f3087a92b4931887b6e87fad02d81b16d7b802c
4
+ data.tar.gz: e6c7f04b46234ffb5422b7a3e3b015c213c58641b17d4e2844404caea1a341ba
5
5
  SHA512:
6
- metadata.gz: 1ed3f0c9dfd61b8accd948ac10f29382f16c0fc8b15c415c8f5de55ab5a2739b6e7991e82c02ec953fd1507cb27079b59a5a15785da4a44b2fbe57f5e08eb083
7
- data.tar.gz: 6171c5e6615b4d426690fca14bc92fea5e7325ee143985bd2fd4fd178833c41085a9e0b9f75a219884fdc900ab4d04a56ccd12d69580636e85b30855dd5f7792
6
+ metadata.gz: 25c3e334c611cd8323a1bde1d47603687e13719b7bfe4363ae9cbe455e7cdd5051b59f4a818d439a1767969c5bebb3d834c74db4841f6c447f16b3c43b53ada9
7
+ data.tar.gz: a8029f92a80dd0fc2e8b6e9a587e0c0598a1286157e65b5af825c4b80120c517cd5a779ac0d3969cb8a691b937b849abb54d622bccfa54b103715b7bab83789b
data/bin/twb.rb ADDED
@@ -0,0 +1 @@
1
+ puts "\n TWB gem here. \n"
data/lib/twb.rb CHANGED
@@ -81,5 +81,5 @@ require_relative 'twb/analysis/sheets/sheetsintooltipanalyzer'
81
81
  # Represents Tableau Workbooks, their contents, and classes that analyze and manipulate them.
82
82
  #
83
83
  module Twb
84
- VERSION = '5.2.1'
84
+ VERSION = '5.2.7'
85
85
  end
File without changes
@@ -34,6 +34,10 @@ module CalculatedFields
34
34
  @imageFiles = Array.new
35
35
  end
36
36
 
37
+ def encode str
38
+ str.gsub('"', '\"')
39
+ end
40
+
37
41
  def processTWB twb
38
42
  # twb = File.basename(twb)
39
43
  @twb = twb #Twb::Workbook.new twb
@@ -50,10 +54,11 @@ module CalculatedFields
50
54
  ds.calculatedFields.each do |cf|
51
55
  @cfCnt += 1
52
56
  calcFields << cf.uiname
53
- edges << " \"#{ds.uiname}\" -> \"#{cf.uiname}\" [tailport=e, headport=w] "
57
+ edges << " \"#{encode(ds.uiname)}\" -> \"#{encode(cf.uiname)}\" [tailport=e, headport=w] "
58
+ puts " \"#{encode(ds.uiname)}\" -> \"#{encode(cf.uiname)}\" [tailport=e, headport=w] "
54
59
  cf.referencedFields.each do |rf|
55
60
  refFields << rf.uiname
56
- edges << " \"#{cf.uiname}\" -> \"#{rf.uiname}\" [tailport=e, headport=w] "
61
+ edges << " \"#{encode(cf.uiname)}\" -> \"#{encode(rf.uiname)}\" [tailport=e, headport=w] "
57
62
  end
58
63
  end # ds.calculatedFields.each
59
64
  # "federated.17h7owt0rsacke17cql8o0w2ittk" -> "New AO Actuals Query in PP+ (AO Variance Data)::vs Prior Year [YTD]"
@@ -64,7 +69,7 @@ module CalculatedFields
64
69
  @dotFile.puts " "
65
70
  allFields = calcFields + refFields
66
71
  allFields.each do |f|
67
- @dotFile.puts "\t \"#{f}\" [label=\"#{f}\"]"
72
+ @dotFile.puts "\t \"#{encode(f)}\" [label=\"#{encode(f)}\"]"
68
73
  end
69
74
  endPointFields = allFields - calcFields
70
75
  rankSame(endPointFields) unless endPointFields.nil? || endPointFields.empty?
@@ -72,6 +72,7 @@ module DataSources
72
72
  'Default Format',
73
73
  'Param-domain-type',
74
74
  'Role',
75
+ 'Semantic Role',
75
76
  'Type',
76
77
  'Calculated?',
77
78
  'Value',
@@ -256,6 +257,7 @@ module DataSources
256
257
  field.defaultFormat,
257
258
  field.paramDomainType,
258
259
  field.role,
260
+ field.semanticRole,
259
261
  field.type,
260
262
  !field.calcField.nil?,
261
263
  field.value,
@@ -62,7 +62,8 @@ module Twb
62
62
  attr_reader :name, :caption, :uiname
63
63
  attr_reader :hasaliases, :alias
64
64
  attr_reader :dataType, :defaultFormat, :paramDomainType
65
- attr_reader :role, :type, :value
65
+ attr_reader :role, :semanticRole
66
+ attr_reader :type, :value
66
67
  attr_reader :alias, :semanticRole, :aggregation
67
68
  attr_reader :autoColumn, :hidden, :datatypeCustomized
68
69
  attr_reader :calcField
@@ -72,25 +73,27 @@ module Twb
72
73
  def initialize(fieldNode, datasource=nil)
73
74
  @datasource = datasource
74
75
  @node = fieldNode
75
- @name = load 'name'
76
+ @name = load('name').sub(/^\[/,'').sub(/\]$/,'')
76
77
  @caption = load 'caption'
77
78
  @uiname = @caption.nil? ? @name : @caption
78
- @dataType = load 'datatype'
79
- @userDataType = load 'user-datatype'
80
- @defaultFormat = load 'default-format'
81
- @paramDomainType = load 'param-domain-type'
82
- @type = load 'type'
83
- @value = load 'value'
84
- @alias = load 'alias'
85
- @semanticRole = load 'semantic-role'
86
- @aggregation = load 'aggregation'
87
- @autoColumn = load 'auto-column'
88
- @datatypeCustomized = load 'datatype-customized'
79
+ #--
80
+ loadAttributes @node
81
+ # @dataType = load 'datatype'
82
+ # @userDataType = load 'user-datatype'
83
+ # @defaultFormat = load 'default-format'
84
+ # @paramDomainType = load 'param-domain-type'
85
+ # @type = load 'type'
86
+ # @value = load 'value'
87
+ # @alias = load 'alias'
88
+ # @semanticRole = load 'semantic-role'
89
+ # @aggregation = load 'aggregation'
90
+ # @autoColumn = load 'auto-column'
91
+ # @datatypeCustomized = load 'datatype-customized'
89
92
  end
90
93
 
91
94
  def id
92
95
  @id ||= @id = @name.hash
93
- end
96
+ end
94
97
 
95
98
  def load nodeName
96
99
  attr = @node.attribute(nodeName)
@@ -98,17 +101,56 @@ module Twb
98
101
  return val
99
102
  end
100
103
 
101
- def role
102
- @role ||= loadRole
104
+ def loadAttributes node
105
+ # puts "augmenting with node:#{node}"
106
+ @node = node
107
+ if node.has_attribute?('aggregation') then @aggregation = node['aggregation'] end
108
+ if node.has_attribute?('alias') then @alias = node['alias'] end
109
+ if node.has_attribute?('auto-column') then @autoColumn = node['auto-column'] end
110
+ if node.has_attribute?('datatype') then @dataType = node['datatype'] end
111
+ if node.has_attribute?('datatype-customized') then @datatypeCustomized = node['datatype-customized'] end
112
+ if node.has_attribute?('default-format') then @defaultFormat = node['default-format'] end
113
+ if node.has_attribute?('param-domain-type') then @paramDomainType = node['param-domain-type'] end
114
+ if node.has_attribute?('role') then @role = node['role'] end
115
+ if node.has_attribute?('semantic-role') then @semanticRole = node['semantic-role'] end
116
+ if node.has_attribute?('type') then @type = node['type'] end
117
+ if node.has_attribute?('user-datatype') then @userDataType = node['user-datatype'] end
118
+ if node.has_attribute?('value') then @value = node['value'] end
119
+ # loadAttr @aggregation, 'aggregation'
120
+ # loadAttr @alias, 'alias'
121
+ # loadAttr @autoColumn, 'auto-column'
122
+ # loadAttr @dataType, 'datatype'
123
+ # loadAttr @datatypeCustomized, 'datatype-customized'
124
+ # loadAttr @defaultFormat, 'default-format'
125
+ # loadAttr @paramDomainType, 'param-domain-type'
126
+ # loadAttr @role, 'role'
127
+ # loadAttr @semanticRole, 'semantic-role'
128
+ # loadAttr @type, 'type'
129
+ # loadAttr @userDataType, 'user-datatype'
130
+ # loadAttr @value, 'value'
103
131
  end
104
132
 
105
- def loadRole
106
- role = @node['role']
107
- if role.nil?
108
- role = @@dataTypeRoleMap[@dataType].nil? ? @dataType : @@dataTypeRoleMap[@dataType]
109
- end
110
- return role
111
- end
133
+ # def loadAttr property, attribute
134
+ # # puts " - def loadAttr attr:#{attribute}: prop:#{property}:"
135
+ # if @node.has_attribute? attribute
136
+ # # puts " - has"
137
+ # property = @node[attribute]
138
+ # # else
139
+ # # puts " - has not"
140
+ # # end
141
+ # end
142
+
143
+ # def role
144
+ # @role ||= loadRole
145
+ # end
146
+
147
+ # def loadRole
148
+ # role = @node['role']
149
+ # if role.nil?
150
+ # role = @@dataTypeRoleMap[@dataType].nil? ? @dataType : @@dataTypeRoleMap[@dataType]
151
+ # end
152
+ # return role
153
+ # end
112
154
 
113
155
  def calcField
114
156
  @calcField ||= loadCalcField
@@ -211,7 +253,7 @@ module Twb
211
253
  end
212
254
 
213
255
  def loadProperties
214
- @properties= {}
256
+ @properties = {} if @properties.nil?
215
257
  @node.attributes.each do |name,attr|
216
258
  @properties[name] = attr.value
217
259
  end
@@ -220,13 +262,21 @@ module Twb
220
262
  end
221
263
 
222
264
  def to_s
223
- @name
265
+ "n:#{@name}: uin:#{uiname}: "
224
266
  end
225
267
 
226
268
  def <=>(other)
227
269
  @name <=> other.name
228
270
  end
229
271
 
272
+ def eql?(other)
273
+ @name == other.name
274
+ end
275
+
276
+ def hash
277
+ @name.hash
278
+ end
279
+
230
280
  end # class ColumnField
231
281
 
232
282
  end
@@ -0,0 +1,98 @@
1
+ require 'nokogiri'
2
+ require 'csv'
3
+ require 'twb'
4
+
5
+ def init
6
+ system 'cls'
7
+ $pFile = File.open('sqlFromTwbDc.txt','w')
8
+
9
+ sqiCSV = 'TWBFieldsByType.csv'
10
+ $fieldsCSV = CSV.open(sqiCSV, 'w')
11
+ $fieldsCSV << [
12
+ 'TWB',
13
+ 'Data Connection - UI',
14
+ 'Field Name',
15
+ 'Field Type',
16
+ ]
17
+ $path = if ARGV.empty? then '**/*.twb' else ARGV[0] end
18
+ emit " "
19
+ emit " Generating SQL Create Table code for Tableau Workbook Data Connections (TWDCs)."
20
+ emit " Each TWDC will have it's own *.sql file containing the SQL code.\n "
21
+ emit " Looking for Workbooks matching: '#{$path}' - from: #{ARGV[0]}\n\n "
22
+ end
23
+
24
+ def method_name
25
+ datasources = {}
26
+ dataSourcesNode = doc.at_xpath('//workbook/datasources')
27
+ dataSourcesNodes = doc.xpath('//workbook/datasources/datasource').to_a
28
+ puts " dsn: #{dataSourcesNodes}"
29
+ datasourceNodes.each do |node|
30
+ datasource = Twb::DataSource.new(node)
31
+ datasources[datasource.name] = datasource
32
+ end
33
+ end
34
+
35
+ $localEmit = true
36
+ def emit stuff
37
+ $pFile.puts stuff
38
+ puts stuff if $localEmit
39
+ end
40
+
41
+ $paths = {
42
+ 'Relation Columns' => './connection/relation/columns/column',
43
+ 'Metadata Records' => './connection/metadata-records/metadata-record',
44
+ 'Columns' => './column',
45
+ }
46
+
47
+ def proc file
48
+ emit "\n == #{file}"
49
+ end
50
+
51
+ def process file
52
+ emit "\n == #{file}"
53
+ doc = Nokogiri::XML(open(file))
54
+ dataSourcesNodes = doc.xpath('//workbook/datasources/datasource')
55
+ dataSourcesNodes.each do |ds|
56
+ emit "\n dc: #{ds.attribute('caption')}"
57
+ emit " dn: #{ds.attribute('name')}\n ---"
58
+ typeCounts = {}
59
+ $paths.each do |type, path|
60
+ nodes = ds.xpath(path).to_a
61
+ # emit " : %3i %-17s %-s" % [nodes.size, type, path]
62
+ typeCnt = nodes.size
63
+ nodes.each do |n|
64
+ $fieldsCSV << [file,ds.attribute('name'),n.attribute('name'),type]
65
+ end
66
+ if type == 'Columns' then
67
+ calcCnt = 0
68
+ nodes.each do |n|
69
+ calc = n.xpath('./calculation')
70
+ # emit " c: #{calc.size} "
71
+ calcCnt += calc.size
72
+ end
73
+ # emit ' ---'
74
+ # emit " c#: %3i " % [calcCnt]
75
+ # emit " !c#: %3i " % [nodes.size - calcCnt]
76
+ typeCounts['Columns'] = nodes.size
77
+ typeCounts['Columns - calc'] = calcCnt
78
+ typeCounts['Columns - not calc'] = nodes.size - calcCnt
79
+ else
80
+ typeCounts[type] = typeCnt
81
+ end
82
+ end
83
+ # emit ' ---'
84
+ typeCounts.each do |t,c|
85
+ emit " tc: %3i %-s" % [c, t]
86
+ end
87
+ end
88
+ end
89
+
90
+ init
91
+
92
+ $paths.each do |path|
93
+ emit " p: #{path}"
94
+ end
95
+
96
+ Dir.glob($path) {|twb| process twb }
97
+
98
+ emit "\n\n== Done ==\n "
@@ -255,11 +255,23 @@ module Twb
255
255
  @columnFieldsMap = {}
256
256
  nodes = @node.xpath('.//column')
257
257
  nodes.each do |n|
258
- field = Twb::ColumnField.new n, self
259
- @columnFields << field
260
- @columnFieldsMap[field.uiname] = field
261
- @columnFieldsMap[field.name] = field
258
+ # puts " "
259
+ # puts @columnFieldsMap.keys.inspect
260
+ name = n.attribute('name').text.sub(/^\[/,'').sub(/\]$/,'')
261
+ loaded = @columnFieldsMap.has_key? name
262
+ if loaded
263
+ # puts "LOADED"
264
+ field = @columnFieldsMap[name]
265
+ # puts "#{field.class}"
266
+ field.loadAttributes(n)
267
+ else
268
+ field = Twb::ColumnField.new n, self
269
+ @columnFieldsMap[field.uiname] = field
270
+ @columnFieldsMap[field.name] = field
271
+ end
272
+ # puts "name:#{name}: \t nn:#{field.name}:\t loaded?:#{loaded} node:#{n}:"
262
273
  end
274
+ @columnFields = @columnFieldsMap.values
263
275
  return @columnFields
264
276
  end
265
277
 
@@ -448,8 +460,10 @@ module Twb
448
460
 
449
461
  def loadAllFields
450
462
  @allFields = SortedSet.new
451
- @allFields << dbFields
452
- @allFields << calculatedFieldNames
463
+ # dbFields.each { |f| @allFields << f }
464
+ # calculatedFields.each { |f| @allFields << f }
465
+ @allFields.merge dbFields
466
+ @allFields.merge calculatedFields
453
467
  end
454
468
 
455
469
  def has_field? fieldName
File without changes
File without changes
@@ -120,7 +120,7 @@ module Twb
120
120
  # filter class='relative-date' column='[Sample - Superstore].[none:Order Date:qk]' first-period='1' include-future='true' include-null='false' last-period='1' period-type='year' />
121
121
  def resolveRelativeDate
122
122
  emit "resolveRelativeDate"
123
- periodType = @node['period-type']
123
+ periodType = @node['period-type'].nil? ? '' : @node['period-type']
124
124
  inclFuture = @node['include-future'] == 'true'
125
125
  firstPeriod = @node['first-period'].to_i
126
126
  lastPeriod = @node['last-period'].to_i
File without changes
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twb
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.1
4
+ version: 5.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Gerrard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-13 00:00:00.000000000 Z
11
+ date: 2021-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: creek
@@ -34,22 +34,22 @@ dependencies:
34
34
  name: kramdown
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1.17'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
39
  version: 1.17.0
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.17'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '1.17'
50
47
  - - ">="
51
48
  - !ruby/object:Gem::Version
52
49
  version: 1.17.0
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.17'
53
53
  description: A sollection of Ruby classes designed for accessing and recording information
54
54
  about, and for manipulating, Tableau Workbooks and their contents.
55
55
  email: Chris@Gerrard.net
@@ -57,48 +57,51 @@ executables: []
57
57
  extensions: []
58
58
  extra_rdoc_files: []
59
59
  files:
60
+ - bin/twb.rb
60
61
  - lib/t.rb
61
62
  - lib/tfl/Flow.rb
62
63
  - lib/twb.rb
64
+ - lib/twb/TwbTest.rb
63
65
  - lib/twb/action.rb
64
- - lib/twb/analysis/annotatedfieldscsvemitter.rb
65
- - lib/twb/analysis/calculatedfields/calculatedfieldsanalyzer.rb
66
- - lib/twb/analysis/calculatedfields/csvemitter.rb
67
- - lib/twb/analysis/calculatedfields/dotanalyzer.rb
68
- - lib/twb/analysis/calculatedfields/fieldsaliasesanalyzer.rb
69
- - lib/twb/analysis/calculatedfields/groupfieldsanalyzer.rb
70
- - lib/twb/analysis/calculatedfields/markdownemitter.rb
71
- - lib/twb/analysis/calculatedfields/t.rb
72
- - lib/twb/analysis/datasources/categoricalcolorcodinganalyzer.rb
73
- - lib/twb/analysis/datasources/datasourcefieldsanalyzer.rb
74
- - lib/twb/analysis/datasources/datasourcefieldscsvemitter.rb
75
- - lib/twb/analysis/datasources/datasourcefilesanalyzer.rb
76
- - lib/twb/analysis/datasources/datasourceoriginsanalyzer.rb
77
- - lib/twb/analysis/datasources/datasourcesenumerator.rb
78
- - lib/twb/analysis/datasources/datasourceslocationsanalyzer.rb
79
- - lib/twb/analysis/datasources/datasourcetablefieldsanalyzer.rb
80
- - lib/twb/analysis/datasources/datasourcetablefieldscsvemitter.rb
81
- - lib/twb/analysis/datasources/extractsanalyzer.rb
82
- - lib/twb/analysis/datasources/fieldsaliasesanalyzer.rb
83
- - lib/twb/analysis/datasources/googlesheetdatasourcesanalyzer.rb
84
- - lib/twb/analysis/datasources/parametersanalyzer.rb
85
- - lib/twb/analysis/documentedfieldscsvemitter.rb
86
- - lib/twb/analysis/documentedfieldsmarkdownemitter.rb
87
- - lib/twb/analysis/sheets/analyzedashboardsheets.rb
88
- - lib/twb/analysis/sheets/dashboardsummarizer.rb
89
- - lib/twb/analysis/sheets/dashsheetsanalyzer.rb
90
- - lib/twb/analysis/sheets/sheetfieldsanalyzer.rb
91
- - lib/twb/analysis/sheets/sheetfiltersanalyzer.rb
92
- - lib/twb/analysis/sheets/sheetfiltersanalyzera.rb
93
- - lib/twb/analysis/sheets/sheetsintooltipanalyzer.rb
94
- - lib/twb/analysis/sheets/sheetsourcesanalyzer.rb
95
- - lib/twb/analysis/sheets/worksheetdatastructurecsvemitter.rb
96
- - lib/twb/analysis/sheets/worksheetsummarizer.rb
66
+ - lib/twb/analysis/AnnotatedFieldsCSVEmitter.rb
67
+ - lib/twb/analysis/CalculatedFields/CSVEmitter.rb
68
+ - lib/twb/analysis/CalculatedFields/CalculatedFieldsAnalyzer.rb
69
+ - lib/twb/analysis/CalculatedFields/MarkdownEmitter.rb
70
+ - lib/twb/analysis/CalculatedFields/dotanalyzer.rb
71
+ - lib/twb/analysis/CalculatedFields/fieldsaliasesanalyzer.rb
72
+ - lib/twb/analysis/CalculatedFields/groupfieldsanalyzer.rb
73
+ - lib/twb/analysis/CalculatedFields/t.rb
74
+ - lib/twb/analysis/DataSources/DataSourceFieldsCSVEmitter.rb
75
+ - lib/twb/analysis/DataSources/DataSourceTableFieldsCSVEmitter.rb
76
+ - lib/twb/analysis/DataSources/categoricalcolorcodinganalyzer.rb
77
+ - lib/twb/analysis/DataSources/datasourcefieldsanalyzer.rb
78
+ - lib/twb/analysis/DataSources/datasourcefilesanalyzer.rb
79
+ - lib/twb/analysis/DataSources/datasourceoriginsanalyzer.rb
80
+ - lib/twb/analysis/DataSources/datasourcesenumerator.rb
81
+ - lib/twb/analysis/DataSources/datasourceslocationsanalyzer.rb
82
+ - lib/twb/analysis/DataSources/datasourcetablefieldsanalyzer.rb
83
+ - lib/twb/analysis/DataSources/extractsanalyzer.rb
84
+ - lib/twb/analysis/DataSources/fieldsaliasesanalyzer.rb
85
+ - lib/twb/analysis/DataSources/googlesheetdatasourcesanalyzer.rb
86
+ - lib/twb/analysis/DataSources/parametersanalyzer.rb
87
+ - lib/twb/analysis/DocumentedFieldsCSVEmitter.rb
88
+ - lib/twb/analysis/DocumentedFieldsMarkdownEmitter.rb
89
+ - lib/twb/analysis/Sheets/WorksheetDataStructureCSVEmitter.rb
90
+ - lib/twb/analysis/Sheets/analyzedashboardsheets.rb
91
+ - lib/twb/analysis/Sheets/dashboardsummarizer.rb
92
+ - lib/twb/analysis/Sheets/dashsheetsanalyzer.rb
93
+ - lib/twb/analysis/Sheets/sheetfieldsanalyzer.rb
94
+ - lib/twb/analysis/Sheets/sheetfiltersanalyzer.rb
95
+ - lib/twb/analysis/Sheets/sheetfiltersanalyzera.rb
96
+ - lib/twb/analysis/Sheets/sheetsintooltipanalyzer.rb
97
+ - lib/twb/analysis/Sheets/sheetsourcesanalyzer.rb
98
+ - lib/twb/analysis/Sheets/worksheetsummarizer.rb
97
99
  - lib/twb/analysis/workbooksummaryanalyzer.rb
98
100
  - lib/twb/calculatedfield.rb
99
101
  - lib/twb/codedfield.rb
100
102
  - lib/twb/columnfield.rb
101
103
  - lib/twb/connection.rb
104
+ - lib/twb/countNodes.rb
102
105
  - lib/twb/dashboard.rb
103
106
  - lib/twb/datasource.rb
104
107
  - lib/twb/dbfield.rb
@@ -107,14 +110,14 @@ files:
107
110
  - lib/twb/docdashboardwebvert.rb
108
111
  - lib/twb/field.rb
109
112
  - lib/twb/fieldcalculation.rb
110
- - lib/twb/finddsfields.rb
113
+ - lib/twb/findDSFields.rb
111
114
  - lib/twb/graph.rb
112
115
  - lib/twb/graphedges.rb
113
116
  - lib/twb/graphnode.rb
114
117
  - lib/twb/groupfield.rb
115
118
  - lib/twb/hashtohtml.rb
116
119
  - lib/twb/htmllistcollapsible.rb
117
- - lib/twb/identifyfields.rb
120
+ - lib/twb/identifyFields.rb
118
121
  - lib/twb/listXMLNodePathsAndAttributes.rb
119
122
  - lib/twb/localfield.rb
120
123
  - lib/twb/mappedfield.rb
@@ -127,15 +130,14 @@ files:
127
130
  - lib/twb/tabtool.rb
128
131
  - lib/twb/there.rb
129
132
  - lib/twb/twbcodedfield.rb
130
- - lib/twb/twbtest.rb
131
133
  - lib/twb/util/atomizecsvrecords.rb
132
134
  - lib/twb/util/csvrecordsatomizer.rb
133
135
  - lib/twb/util/cypher.rb
134
136
  - lib/twb/util/cypherpython.rb
135
137
  - lib/twb/util/docprep.rb
136
- - lib/twb/util/dotfilerenderer.rb
138
+ - lib/twb/util/dotFileRenderer.rb
137
139
  - lib/twb/util/fielddomainloader.rb
138
- - lib/twb/util/ftppublisher.rb
140
+ - lib/twb/util/ftpPublisher.rb
139
141
  - lib/twb/util/gml.rb
140
142
  - lib/twb/util/gmledge.rb
141
143
  - lib/twb/util/graph.rb
@@ -144,11 +146,11 @@ files:
144
146
  - lib/twb/util/graphnode.rb
145
147
  - lib/twb/util/hashtohtml.rb
146
148
  - lib/twb/util/htmllistcollapsible.rb
147
- - lib/twb/util/joinutilities.rb
149
+ - lib/twb/util/joinUtilities.rb
148
150
  - lib/twb/util/tabgraph.rb
149
- - lib/twb/util/twbdashessheetdatadotbuilder.rb
150
- - lib/twb/util/twbdashsheetdatadotbuilder.rb
151
- - lib/twb/util/twbdashsheetdatadotrenderer.rb
151
+ - lib/twb/util/twbDashSheetDataDotBuilder.rb
152
+ - lib/twb/util/twbDashSheetDataDotRenderer.rb
153
+ - lib/twb/util/twbDashesSheetDataDotBuilder.rb
152
154
  - lib/twb/util/xraydashboards.rb
153
155
  - lib/twb/window.rb
154
156
  - lib/twb/workbook.rb
@@ -188,8 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
190
  - !ruby/object:Gem::Version
189
191
  version: '0'
190
192
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.7.6
193
+ rubygems_version: 3.0.3
193
194
  signing_key:
194
195
  specification_version: 4
195
196
  summary: Classes for accessing Tableau Workbooks and their contents.