twb 5.2.0 → 5.2.6

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.
Files changed (51) 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 +0 -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 +73 -24
  39. data/lib/twb/countNodes.rb +98 -0
  40. data/lib/twb/datasource.rb +16 -4
  41. data/lib/twb/fieldcalculation.rb +13 -9
  42. data/lib/twb/{finddsfields.rb → findDSFields.rb} +0 -0
  43. data/lib/twb/{identifyfields.rb → identifyFields.rb} +0 -0
  44. data/lib/twb/quickfilter.rb +1 -1
  45. data/lib/twb/util/{dotfilerenderer.rb → dotFileRenderer.rb} +0 -0
  46. data/lib/twb/util/{ftppublisher.rb → ftpPublisher.rb} +0 -0
  47. data/lib/twb/util/{joinutilities.rb → joinUtilities.rb} +0 -0
  48. data/lib/twb/util/{twbdashsheetdatadotbuilder.rb → twbDashSheetDataDotBuilder.rb} +0 -0
  49. data/lib/twb/util/{twbdashsheetdatadotrenderer.rb → twbDashSheetDataDotRenderer.rb} +0 -0
  50. data/lib/twb/util/{twbdashessheetdatadotbuilder.rb → twbDashesSheetDataDotBuilder.rb} +0 -0
  51. metadata +53 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e028806f0ddf3f1a48cda4ae9476f63f9302107cab1116673f1934f96143919
4
- data.tar.gz: ec93e736c7833c5801cdc5fa7bd9344addd0de495d26d7e7d9af81633abbef52
3
+ metadata.gz: ccd5e3f60908b3588d6e16b24932760d10c7f529cee28c5b8c57cc6b536536e1
4
+ data.tar.gz: f11f10dacb407baa8ccad990d6ed1095970603f6863ceab276a85afd69b555ee
5
5
  SHA512:
6
- metadata.gz: 620200b5922bff2813fc62503fcce0faa43a9f3daade99e87e003fe05a856aae102a7a8fef67fe7ddb4e847cdb8a0594fc66eea6377cf46955fd0708995cf8eb
7
- data.tar.gz: a7db358530ed931716db2221206eae088ce2b82a61a638dca303863c738d88f7283e2b791dba8feefe321cf7478f1f0d44b233b3fdc21958778defdc365ad21d
6
+ metadata.gz: 690986db75b5487436bc403e941cf9a5ba76e1cd30a067ed7ac9e19bfeef5abd2824373748263a4129af423039e2d0bb1e30fd505c2b98c23830b6ef0fa830a9
7
+ data.tar.gz: 797b79b25e06eddf021e66c81ad0393bee4c8adf417867b720884a9cde512affe0f0319dd145b534e591b8fec9f4dd4b82453dd377ce65268d36fc8a8ce70f10
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.0'
84
+ VERSION = '5.2.6'
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,25 +72,27 @@ module Twb
72
72
  def initialize(fieldNode, datasource=nil)
73
73
  @datasource = datasource
74
74
  @node = fieldNode
75
- @name = load 'name'
75
+ @name = load('name').sub(/^\[/,'').sub(/\]$/,'')
76
76
  @caption = load 'caption'
77
77
  @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'
78
+ #--
79
+ loadAttributes @node
80
+ # @dataType = load 'datatype'
81
+ # @userDataType = load 'user-datatype'
82
+ # @defaultFormat = load 'default-format'
83
+ # @paramDomainType = load 'param-domain-type'
84
+ # @type = load 'type'
85
+ # @value = load 'value'
86
+ # @alias = load 'alias'
87
+ # @semanticRole = load 'semantic-role'
88
+ # @aggregation = load 'aggregation'
89
+ # @autoColumn = load 'auto-column'
90
+ # @datatypeCustomized = load 'datatype-customized'
89
91
  end
90
92
 
91
93
  def id
92
94
  @id ||= @id = @name.hash
93
- end
95
+ end
94
96
 
95
97
  def load nodeName
96
98
  attr = @node.attribute(nodeName)
@@ -98,17 +100,56 @@ module Twb
98
100
  return val
99
101
  end
100
102
 
101
- def role
102
- @role ||= loadRole
103
+ def loadAttributes node
104
+ # puts "augmenting with node:#{node}"
105
+ @node = node
106
+ if node.has_attribute?('aggregation') then @aggregation = node['aggregation'] end
107
+ if node.has_attribute?('alias') then @alias = node['alias'] end
108
+ if node.has_attribute?('auto-column') then @autoColumn = node['auto-column'] end
109
+ if node.has_attribute?('datatype') then @dataType = node['datatype'] end
110
+ if node.has_attribute?('datatype-customized') then @datatypeCustomized = node['datatype-customized'] end
111
+ if node.has_attribute?('default-format') then @defaultFormat = node['default-format'] end
112
+ if node.has_attribute?('param-domain-type') then @paramDomainType = node['param-domain-type'] end
113
+ if node.has_attribute?('role') then @role = node['role'] end
114
+ if node.has_attribute?('semantic-role') then @semanticRole = node['semantic-role'] end
115
+ if node.has_attribute?('type') then @type = node['type'] end
116
+ if node.has_attribute?('user-datatype') then @userDataType = node['user-datatype'] end
117
+ if node.has_attribute?('value') then @value = node['value'] end
118
+ # loadAttr @aggregation, 'aggregation'
119
+ # loadAttr @alias, 'alias'
120
+ # loadAttr @autoColumn, 'auto-column'
121
+ # loadAttr @dataType, 'datatype'
122
+ # loadAttr @datatypeCustomized, 'datatype-customized'
123
+ # loadAttr @defaultFormat, 'default-format'
124
+ # loadAttr @paramDomainType, 'param-domain-type'
125
+ # loadAttr @role, 'role'
126
+ # loadAttr @semanticRole, 'semantic-role'
127
+ # loadAttr @type, 'type'
128
+ # loadAttr @userDataType, 'user-datatype'
129
+ # loadAttr @value, 'value'
103
130
  end
104
131
 
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
132
+ # def loadAttr property, attribute
133
+ # # puts " - def loadAttr attr:#{attribute}: prop:#{property}:"
134
+ # if @node.has_attribute? attribute
135
+ # # puts " - has"
136
+ # property = @node[attribute]
137
+ # # else
138
+ # # puts " - has not"
139
+ # # end
140
+ # end
141
+
142
+ # def role
143
+ # @role ||= loadRole
144
+ # end
145
+
146
+ # def loadRole
147
+ # role = @node['role']
148
+ # if role.nil?
149
+ # role = @@dataTypeRoleMap[@dataType].nil? ? @dataType : @@dataTypeRoleMap[@dataType]
150
+ # end
151
+ # return role
152
+ # end
112
153
 
113
154
  def calcField
114
155
  @calcField ||= loadCalcField
@@ -211,7 +252,7 @@ module Twb
211
252
  end
212
253
 
213
254
  def loadProperties
214
- @properties= {}
255
+ @properties = {} if @properties.nil?
215
256
  @node.attributes.each do |name,attr|
216
257
  @properties[name] = attr.value
217
258
  end
@@ -220,13 +261,21 @@ module Twb
220
261
  end
221
262
 
222
263
  def to_s
223
- @name
264
+ "n:#{@name}: uin:#{uiname}: "
224
265
  end
225
266
 
226
267
  def <=>(other)
227
268
  @name <=> other.name
228
269
  end
229
270
 
271
+ def eql?(other)
272
+ @name == other.name
273
+ end
274
+
275
+ def hash
276
+ @name.hash
277
+ end
278
+
230
279
  end # class ColumnField
231
280
 
232
281
  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
 
@@ -125,17 +125,21 @@ module Twb
125
125
  end
126
126
 
127
127
  def resolveFormula
128
- # puts "\ndef resolveFormula:\n--\n#{@formula}"
129
- formula = @formula
128
+ # emit "\ndef resolveFormula:\n--\n#{@formula}"
129
+ resolved = @formula
130
+ # emit "\t formula:#{resolved}:"
130
131
  # parseFormFields # - extracts the fields from the formula; as persisted they're the internal names
131
- referencedFields.each do |calcField|
132
- # if calcField.techUIdiff
133
- # # puts ":::: #{calcField.techCode} // #{calcField.uiCode}"
134
- # formula = formula.gsub(calcField.techCode,calcField.uiCode)
135
- # # puts ":--: #{formula}"
136
- # end
132
+ referencedFields.each do |refField|
133
+ # emit "\t refField: "
134
+ resolved.gsub!(refField.techCode,refField.uiCode)
135
+ # if calcField.techUIdiff
136
+ # # puts ":::: #{calcField.techCode} // #{calcField.uiCode}"
137
+ # formula = formula.gsub(calcField.techCode,calcField.uiCode)
138
+ # # puts ":--: #{formula}"
139
+ # end
137
140
  end
138
- return formula
141
+ # emit "\t formula:#{resolved}:"
142
+ return resolved
139
143
  end
140
144
 
141
145
  def referencedFields
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.0
4
+ version: 5.2.6
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-06-23 00:00:00.000000000 Z
11
+ date: 2021-04-19 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.