phari_doc_gen 3.1.1 → 3.2.1

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/phari_doc_gen/fileHandler.rb +88 -65
  3. metadata +5 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cfc4375dfeebfedbc72b6c1d72606e1bd785956
4
- data.tar.gz: 2af9ab2a967951d392116b56ff6bc994a00c09f7
3
+ metadata.gz: d3d7a71d5f3a2b43164e8a80a7bfa06793ae636e
4
+ data.tar.gz: f531970846e40cae729f8a16d9ef6e443149bd60
5
5
  SHA512:
6
- metadata.gz: 227d7265a65225e844dc144faa4a43481c534aad13c8ad296a5f9980ecfc8a4b9b8ac1d8c0ffab85a52b93ba627ff14190211533f4dc0768c37947445f1cc527
7
- data.tar.gz: 2b30ebe10d48fbfbad635019205c972235a0c3dcdb082b01dd570ebd237e16ac48dcf6c90970eb2a1e84be60f43efacb024ed069c32b4f1d5977884ef658804e
6
+ metadata.gz: 3a5d52a2627facdac5066513b7af36fb14b01b1382ac7c26b3014da7b1585f01a9abf15730650e0120151ab7ed77db12665a1b1bb98542858dfc897d4e2aeb7c
7
+ data.tar.gz: 851f7993034c0f848a4564202d55139c1a546ef75ddb0f67588c1ceda38460e1510e95736c9b980e655c6d2da4146102d24e8cd2b7931b7c9cb1468d15679845
@@ -16,12 +16,8 @@ class FileHandler
16
16
  # Reading files
17
17
  # Find a folder with the project name
18
18
  def packageExistis?(packageName)
19
- found = false
20
- puts'Finding project'
21
- puts'It may take some time...'
22
19
  packageName += '/' unless packageName.end_with?('/')
23
- found = Dir.exists?(packageName)
24
- if found
20
+ if Dir.exists?(packageName)
25
21
  # Return the folder path if found
26
22
  return packageName
27
23
  else
@@ -115,8 +111,10 @@ class FileHandler
115
111
  arr.each do |line|
116
112
  # Read markdown syntax and trasform into HTML tags
117
113
  next if line.start_with?('# ') || line.start_with?('#!shell')
118
- line = '<h3>' + line.slice(3, line.length - 3) + '</h3>'if line.start_with?('## ')
119
- line = '<h4>' + line.slice(4, line.length - 4) + '</h4>' if line.start_with?('### ')
114
+ line = '<h1>' + line.slice(2, line.length - 2) + '</h1>' if line.start_with?('# ')
115
+ line = '<h2>' + line.slice(3, line.length - 3) + '</h2>' if line.start_with?('## ')
116
+ line = '<h3>' + line.slice(4, line.length - 4) + '</h3>' if line.start_with?('### ')
117
+ line = '<h4>' + line.slice(5, line.length - 5) + '</h4>' if line.start_with?('#### ')
120
118
  line = '<h5>' + line.slice(6, line.length - 6) + '</h5>' if line.start_with?('##### ')
121
119
  line = '<li>' + line.slice(2, line.length - 2) + '</li>' if line.start_with?('* ')
122
120
  line = higlightText(line) while hasBetween?(line, '**', '**')
@@ -269,10 +267,8 @@ class FileHandler
269
267
  nome = argument
270
268
  when 'param'
271
269
  data = dataValue(argument, inputs)
272
- inputs["#{data.name}"] = data unless data.isChild
273
270
  when 'return'
274
271
  data = dataValue(argument, outputs)
275
- outputs["#{data.name}"] = data unless data.isChild
276
272
  else
277
273
  # If a possible syntax error is found, a warning is sent informing file and linne
278
274
  puts "Warning: in #{helpername}:#{lineIndex}: #{keyword} is not a keyword" if keyword != 'namespace'
@@ -365,10 +361,8 @@ class FileHandler
365
361
  nome = argument
366
362
  when 'param'
367
363
  data = dataValue(argument, inputs)
368
- inputs["#{data.name}"] = data unless data.isChild
369
364
  when 'return'
370
365
  data = dataValue(argument, outputs)
371
- outputs["#{data.name}"] = data unless data.isChild
372
366
  else
373
367
  # If a possible syntax error is found, a warning is sent informing file and linne
374
368
  # (Here in the namespace comparison, i'm doing a little mcgyver)
@@ -443,8 +437,8 @@ class FileHandler
443
437
  raise ArgumentError.new("Sytanx error: expected 2 arguments (none given)") unless hasSomething?(sentence)
444
438
  raise ArgumentError.new("Sytanx error: expected 2 arguments (one given)") unless sentence.include?("\s")
445
439
  finalIndex = line.index("\s", line.index('@'))
446
- lenght = finalIndex - initialIndex
447
- keyword = line.slice(initialIndex, lenght)
440
+ length = finalIndex - initialIndex
441
+ keyword = line.slice(initialIndex, length)
448
442
  argument = line.slice(finalIndex + 1, line.size - finalIndex)
449
443
  raise ArgumentError.new("Sytanx error: expected 2 arguments (one given)") unless hasSomething?(argument)
450
444
  args << keyword
@@ -462,66 +456,97 @@ class FileHandler
462
456
  false
463
457
  end
464
458
 
459
+ def clear str
460
+ firstIndex = 0
461
+ lastIndex = str.length
462
+ for i in 0..str.length-1
463
+ if str[i].match(/^[[:alpha:]]$/)
464
+ lastIndex = i + 1
465
+ end
466
+ end
467
+ str = str.slice(0, lastIndex)
468
+ for i in 0..str.length-1
469
+ if str[i].match(/^[[:alpha:]]$/)
470
+ firstIndex = i - 1
471
+ break
472
+ end
473
+ end
474
+ str = str.slice(firstIndex + 1, str.length - firstIndex)
475
+ str
476
+ end
477
+
465
478
  # If the clause is a param or return value, decode the name and datatype
466
479
  def dataValue(argument, objects)
467
- if argument.include? "\s"
468
- notNull = true
469
- isObject = false
470
- isCollection = false
471
- isChild = false
472
- name = argument.slice(0, argument.index("\s"))
473
- if name.end_with?('?')
474
- notNull = false
475
- name = name.slice(0, name.index('?'))
476
- end
477
- type = argument.slice(argument.index("\s") + 1, argument.size - 2)
478
- if type.include? "\s"
479
- example = type.slice(type.index("\s")+1, type.size-1-type.index("\s"))
480
- type = type.slice(0, type.index("\s"))
481
- end
482
- type = type.slice(0, type.size-1) if type.end_with?("\s") || type.end_with?("\n")
483
- isObject = type.downcase == "object"
484
- isCollection = type.downcase == "array"
485
- # Inserting attributes inside objects
486
- if name.include?(">")
487
- isChild = true
488
- path = []
489
- while name.include?(">")
490
- prefix = name.slice(0, name.index(">"))
491
- name = name.slice(name.index(">")+1, name.size-(name.index(">")+1))
492
- path << prefix
480
+ args = []
481
+ while argument.include? ','
482
+ raise ArgumentError, 'Unexpected ","' unless hasSomething?(argument)
483
+ args << argument.slice(0, argument.index(','))
484
+ argument = argument.slice(argument.index(',') + 1, argument.length - argument.index(','))
485
+ argument = clear(argument)
486
+ end
487
+ argument = clear(argument)
488
+ args << argument
489
+ args.each do |arg|
490
+ if arg.include? "\s"
491
+ notNull = true
492
+ isObject = false
493
+ isCollection = false
494
+ isChild = false
495
+ name = arg.slice(0, arg.index("\s"))
496
+ if name.end_with?('?')
497
+ notNull = false
498
+ name = name.slice(0, name.index('?'))
499
+ end
500
+ type = arg.slice(arg.index("\s") + 1, arg.size - 2)
501
+ if type.include? "\s"
502
+ example = type.slice(type.index("\s")+1, type.size-1-type.index("\s"))
503
+ type = type.slice(0, type.index("\s"))
493
504
  end
494
- fatherObject = nil
495
- path.each do |object|
496
- if (fatherObject.nil? || fatherObject.isObject)
497
- raise ArgumentError, "Object #{object} does not exists!" unless objects.has_key?(object) && (objects["#{object}"].isObject || objects["#{object}"].isCollection)
498
- fatherObject = objects["#{object}"]
499
- elsif (fatherObject.isCollection)
500
- raise ArgumentError, "Object #{object} is not a position of #{fatherObject.name}!" unless (objects["content"].isObject || objects["content"].isCollection)
501
- fatherObject = objects["content"]
505
+ type = type.slice(0, type.size-1) if type.end_with?("\s") || type.end_with?("\n")
506
+ isObject = type.downcase == "object"
507
+ isCollection = type.downcase == "array"
508
+ # Inserting attributes inside objects
509
+ if name.include?(">")
510
+ isChild = true
511
+ path = []
512
+ while name.include?(">")
513
+ prefix = name.slice(0, name.index(">"))
514
+ name = name.slice(name.index(">")+1, name.size-(name.index(">")+1))
515
+ path << prefix
516
+ end
517
+ fatherObject = nil
518
+ children = objects
519
+ path.each do |object|
520
+ if (fatherObject.nil? || fatherObject.isObject)
521
+ raise ArgumentError, "Object #{object} does not exists!" unless children.has_key?(object) && (children["#{object}"].isObject || children["#{object}"].isCollection)
522
+ fatherObject = children["#{object}"]
523
+ elsif (fatherObject.isCollection)
524
+ raise ArgumentError, "Object #{object} is not a position of #{fatherObject.name}!" unless (children["content"].isObject || children["content"].isCollection)
525
+ fatherObject = children["content"]
526
+ end
527
+ children = fatherObject.childAttributes
502
528
  end
503
- objects = fatherObject.childAttributes
504
529
  end
505
- end
506
- data = MethodParam.new(name, type, notNull, isObject, isCollection, isChild, example)
507
- fatherObject.addField data unless (fatherObject.nil? || fatherObject.isCollection)
508
- fatherObject.setContent data unless (fatherObject.nil? || fatherObject.isObject)
509
- # Return the data
510
- return data
511
- elsif argument.include? "nil"
512
- data = MethodParam.new('', 'nil', false, false, false, false, nil)
513
- return data
530
+ data = MethodParam.new(name, type, notNull, isObject, isCollection, isChild, example)
531
+ fatherObject.addField data unless (fatherObject.nil? || fatherObject.isCollection)
532
+ fatherObject.setContent data unless (fatherObject.nil? || fatherObject.isObject)
533
+ # Return the data
534
+ objects["#{data.name}"] = data unless data.isChild
535
+ elsif arg.include? "nil"
536
+ data = MethodParam.new('', 'nil', false, false, false, false, nil)
537
+ objects["#{data.name}"] = data unless data.isChild
538
+ else
539
+ # If any information is missing or incorrect, raises an Argument Error
540
+ raise ArgumentError.new("Syntax error: #{arg} is no data")
541
+ end
514
542
  end
515
- argumentText = argument.slice(0, argument.index("\n"))
516
- # If any information is missing or incorrect, raises an Argument Error
517
- raise ArgumentError.new("Sytanx error: #{argumentText} is no data")
518
543
  end
519
544
 
520
545
  # Decode the text from a description clause
521
546
  def decodeDescription(line)
522
547
  initialIndex = line.index('*') + 3
523
- lenght = line.size - initialIndex
524
- description = line.slice(initialIndex, lenght)
548
+ length = line.size - initialIndex
549
+ description = line.slice(initialIndex, length)
525
550
  # Return the description text
526
551
  description
527
552
  end
@@ -594,9 +619,7 @@ class FileHandler
594
619
  def gem_libdir
595
620
  t = ["#{File.dirname(File.expand_path($0))}/../lib/#{Meta::NAME}",
596
621
  "#{Gem.dir}/gems/#{Meta::NAME}-#{Meta::VERSION}/lib/#{Meta::NAME}"]
597
- t.each do |i|
598
- return i if File.readable?(i)
599
- end
622
+ t.each {|i| return i if File.readable?(i) }
600
623
  raise "both paths are invalid: #{t}"
601
624
  end
602
625
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phari_doc_gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phari Solutions
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-23 00:00:00.000000000 Z
12
+ date: 2018-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -65,18 +65,8 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.7'
68
- description: |2-
69
- Hi there, friend! PhariDoc Generator is a simple
70
- and functional documentation generator for Ruby web aps.
71
- PhariDoc Generator will provide you an easy way
72
- to generate documentation for your projects. The result
73
- will be a project page with a description that can be written using a simplified
74
- markdown syntax. Also, each ruby
75
- Class will have it's own page especifying it's relatios helper methods and controller
76
- routes including their inputs, outputs and descriptions. The gem includes
77
- an executable file and the classes that can be used individually,
78
- providing the possibility to use the generator for any project
79
- structure.
68
+ description: Phari Doc Generator provides an easy way to generate project documentation
69
+ for sinatra/padrino file structure patterns.
80
70
  email: luiz@phari.solutions
81
71
  executables:
82
72
  - phari_doc_gen
@@ -94,7 +84,7 @@ files:
94
84
  - lib/phari_doc_gen/templates/model.html.erb
95
85
  - lib/phari_doc_gen/templates/project.html.erb
96
86
  - lib/phari_doc_gen/templates/style.css
97
- homepage: https://gitlab.com/LuizPPA/PhariDocGen
87
+ homepage: https://github.com/PhariSolutions/Phari-Doc-Gen
98
88
  licenses:
99
89
  - Beerware
100
90
  metadata: {}