Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature markdown description #377

Merged
merged 63 commits into from
Jun 17, 2019
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
1a8c2e7
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
71d287f
Descriptions for general api info and tags can now be read from markd…
Apr 16, 2019
3d8ed1a
Fixed broken test
Apr 16, 2019
f9f7306
getMarkdownFileForTag now only matches .md files
Apr 16, 2019
e0566ff
Merge branch 'master' into feature_markdown_description
easonlin404 May 11, 2019
21492af
fix(property): remove warning (#393)
easonlin404 May 11, 2019
1bf778e
chore(readme): add release badge (#394)
easonlin404 May 11, 2019
c129644
Merge branch 'master' into feature_markdown_description
Nerzal May 12, 2019
0049d30
Fixed broken test
Nerzal May 12, 2019
33d60a1
refactor: return error instead of panic (#399)
easonlin404 May 20, 2019
f33a679
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
60ff51f
fix(property): remove warning (#393)
easonlin404 May 11, 2019
e0bc242
Fixes after mergeconflicts
May 27, 2019
56ed618
removed coverage files which were added through an vscode extension b…
Nerzal May 28, 2019
bb3291e
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
135fb78
Added paths to gitignore to prevent files from being added, which are…
Nerzal May 28, 2019
3d43f26
Ignoring .orig files, which are creating when merging
Nerzal May 28, 2019
13f436d
Added an extra section in the readme for the markdown descriptions
Nerzal May 28, 2019
c52d7bf
refactor: return error instead of panic (#399)
easonlin404 May 20, 2019
96f0fc8
fix(example): fix typos in UploadAccountImage message (#401)
ryohashimoto May 31, 2019
64c3901
Fix processing alias type in struct when alias type is in another pac…
Kipriz Jun 1, 2019
16962b7
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
b66fc05
cleanup
Nerzal Jun 8, 2019
2a07b6b
Added functional option for New() parser
Jun 12, 2019
f5c36a5
chore(mod): leave only build dependencies (#405)
easonlin404 Jun 11, 2019
27efd33
chore(assets): update swaggo png (#408)
easonlin404 Jun 11, 2019
7a62e62
chore: release v1.5.1 (#409)
easonlin404 Jun 12, 2019
413b2f3
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
f4cc061
Added functional option for New() parser
Jun 12, 2019
24c3c07
Applying functional options in constructor method
Jun 12, 2019
eb783b8
Using t.Error() instead of t.Log() to log errors and fail the test
Jun 12, 2019
5499fb1
fmt'ed
Jun 12, 2019
201ae8f
Merge branch 'master' into feature_markdown_description
easonlin404 Jun 12, 2019
2777714
Removed unused folders again
Jun 12, 2019
6ee61d7
refactor: added some error checks (#411)
Nerzal Jun 12, 2019
e4a3f02
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
344c151
Descriptions for general api info and tags can now be read from markd…
Apr 16, 2019
f0a9a3f
Fixed broken test
Apr 16, 2019
2863167
getMarkdownFileForTag now only matches .md files
Apr 16, 2019
5ee1c22
Fixed broken test
Nerzal May 12, 2019
30dd230
refactor: return error instead of panic (#399)
easonlin404 May 20, 2019
358f74c
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
b10db1b
fix(property): remove warning (#393)
easonlin404 May 11, 2019
c2f0ad2
removed coverage files which were added through an vscode extension b…
Nerzal May 28, 2019
2130a9c
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
6ab1290
Added paths to gitignore to prevent files from being added, which are…
Nerzal May 28, 2019
1b7083c
Ignoring .orig files, which are creating when merging
Nerzal May 28, 2019
46160ea
Added an extra section in the readme for the markdown descriptions
Nerzal May 28, 2019
0fc41fb
refactor: return error instead of panic (#399)
easonlin404 May 20, 2019
0cc5e8f
Fix processing alias type in struct when alias type is in another pac…
Kipriz Jun 1, 2019
d4f1239
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
23459f3
cleanup
Nerzal Jun 8, 2019
44ee086
Added functional option for New() parser
Jun 12, 2019
5d8b549
Added new Feature that allows to use markdown files as tag description
Apr 16, 2019
06c6741
Added functional option for New() parser
Jun 12, 2019
daf01e7
Applying functional options in constructor method
Jun 12, 2019
7ce3475
Using t.Error() instead of t.Log() to log errors and fail the test
Jun 12, 2019
b29c566
fmt'ed
Jun 12, 2019
09e7406
Removed unused folders again
Jun 12, 2019
802f8d9
Merge branch 'feature_markdown_description' of github.com:Nerzal/swag…
Jun 12, 2019
fd74251
Fixed errors caused by merging
Jun 12, 2019
f1d78a8
Fixed another error
Jun 12, 2019
2d4747a
go fmt
Jun 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .nyc_output/1ae8eccb94781ab868ab868a50dec857.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Nerzal marked this conversation as resolved.
Show resolved Hide resolved
1 change: 1 addition & 0 deletions .nyc_output/8faa47794e27157a45248fe0dc1372eb.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions .nyc_output/fa7e9fe53aaa1e480b6b533eff6725c2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,10 @@ $ swag init
| title | **Required.** The title of the application.| // @title Swagger Example API |
| version | **Required.** Provides the version of the application API.| // @version 1.0 |
| description | A short description of the application. |// @description This is a sample server celler server. |
| description.markdown | A short description of the application. Parsed from the api.md file. This is an alternative to @description |// @description.markdown No value needed, this parses the description from api.md |
| tag.name | Name of a tag.| // @tag.name This is the name of the tag |
| tag.description | Description of the tag | // @tag.description Cool Description |
| tag.description.markdown | Description of the tag this is an alternative to tag.description. The description will be read from a file named like tagname.md | // @tag.description.markdown |
Nerzal marked this conversation as resolved.
Show resolved Hide resolved
| tag.docs.url | Url of the external Documentation of the tag | // @tag.docs.url https://example.com|
| tag.docs.descripiton | Description of the external Documentation of the tag| // @tag.docs.descirption Best example documentation |
| termsOfService | The Terms of Service for the API.| // @termsOfService http://swagger.io/terms/ |
Expand Down
24 changes: 19 additions & 5 deletions cmd/swag/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ import (
"github.com/urfave/cli"
)

const searchDirFlag = "dir"
const generalInfoFlag = "generalInfo"
const propertyStrategyFlag = "propertyStrategy"
const outputFlag = "output"
const parseVendorFlag = "parseVendor"
const markdownFilesDirFlag = "markdownFiles"

func main() {
app := cli.NewApp()
app.Version = swag.Version
Expand All @@ -20,11 +27,12 @@ func main() {
Aliases: []string{"i"},
Usage: "Create docs.go",
Action: func(c *cli.Context) error {
searchDir := c.String("dir")
mainAPIFile := c.String("generalInfo")
strategy := c.String("propertyStrategy")
outputDir := c.String("output")
parseVendor := c.Bool("parseVendor")
searchDir := c.String(searchDirFlag)
mainAPIFile := c.String(generalInfoFlag)
strategy := c.String(propertyStrategyFlag)
outputDir := c.String(outputFlag)
parseVendor := c.Bool(parseVendorFlag)
markdownFilesDir := c.String(markdownFilesDirFlag)

switch strategy {
case swag.CamelCase, swag.SnakeCase, swag.PascalCase:
Expand All @@ -38,6 +46,7 @@ func main() {
PropNamingStrategy: strategy,
OutputDir: outputDir,
ParseVendor: parseVendor,
MarkdownFilesDir: markdownFilesDir,
})
},
Flags: []cli.Flag{
Expand Down Expand Up @@ -65,6 +74,11 @@ func main() {
Name: "parseVendor",
Usage: "Parse go files in 'vendor' folder, disabled by default",
},
cli.StringFlag{
Name: "markdownFiles, md",
Value: "",
Usage: "Parse folder containing markdown files to use as description, disabled by default",
},
},
},
}
Expand Down
223 changes: 223 additions & 0 deletions coverage/base.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}

.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }

.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}

div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}

table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}

table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}

.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }

.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }

.medium .chart { border:1px solid #666; }
.medium .cover-fill { background: #666; }

.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }

span.cline-neutral { background: #eaeaea; }
.medium { background: #eaeaea; }

.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}

.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }

.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}
63 changes: 63 additions & 0 deletions coverage/block-navigation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
var jumpToCode = (function init () {
// Classes of code we would like to highlight
var missingCoverageClasses = [ '.cbranch-no', '.cstat-no', '.fstat-no' ];

// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `

// Selecter that finds elements on the page to which we can jump
var selector = notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`

// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);

var currentIndex;

function toggleClass(index) {
missingCoverageElements.item(currentIndex).classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
}

function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index)
.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
}

function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}

makeCurrent(nextIndex);
}

function goToNext() {
var nextIndex = 0;

if (typeof currentIndex === 'number' && currentIndex < (missingCoverageElements.length - 1)) {
nextIndex = currentIndex + 1;
}

makeCurrent(nextIndex);
}

return function jump(event) {
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
}());
window.addEventListener('keydown', jumpToCode);
Loading