dash-docs/_plugins/glossary.rb
thephez 703c54ffbc Dev ref conversion (#2)
Developer reference/guide updates to this point

* Update some reference documents
 - Adjust ref_intro to reference Dash
 - Start updating p2p network ref
 - Adjust some items in references.md to point to Dash URLs

* Update P2P networking protocol versions and message headers sections
Update subheading-links
Update more items in references.md

* Update inventories to include Dash specific items
 - Update references.md with them also
Update disclaimer (Bitcoin -> Dash)

* Remove reference to bitcoin mailing list from ref_intro

* Add Spork/GetSporks message details
Add placeholders for Dash specific messages
 - Added subsections for InstantSend, PrivateSend, Masternodes, and
Governance

* Some Bitcoin->Dash conversions
 - Update title / section name for Dev Doc/Dev Reference
 - Updated favicon

* Updates for the Data Network section of P2P reference

* Added Alert message details from Bitcoin back and removed feefilter

* More updates for Control Messages section of P2P network
 - Bitcoin->Dash reference changes
 - Reject and Version message updates

* InstantSend subsection of P2P reference detail
 - Added ix, txlvote message details and associated references

* Governance subsection (P2P)
 - Start adding govobj, govobjvote details
 - Add spork references

* Missed spork xref in previous

* Governance (P2P) updates
 - Add details to govobjvote and govsync

* Governance object P2P messages
 - Add additional description/details

* PrivateSend P2P messages
 - Added details for dsa, dsc, dsf, dsi, dsq, dss, dssu, and dstx
messages
  - Added references also
  - Hexdump examples for all but dsi and dss

* PrivateSend P2P minor updates

* Masternode P2P messages
 - Add descriptions
 - Add hexdump details

* Masternode P2P messages (dseg, mnb, mnget, mnp, mnv, mnw, mnwb, ssc)
 - Add reference/crossref entries
 - Add message structure

* P2P messages - minor formatting and corrections

* Block chain reference
 - Version info updates

* Update Block Chain reference (Headers)
 - Update version details
 - Update block reward info

* Update Transactions reference
 - Add some Dash specific updates

* Minor Transactions reference change

* RPC reference updates

* RPC reference updates
 - Added/removed commands to match available Dash commands

* Core API updates

* Renamed devdocs/bitcoin-core to dash-core
 - Updated developer-reference.md to point at new location

* Update filename to use dash-core instead of bitcoin-core

* Add Dash-specific GetAddressBalance RPC command and associated updates
Update RPC quick reference list

* Added cross reference/reference placeholders for remaining GetAddress... RPC commands
Added RPC template placeholder files for remaining GetAddress...
commands

* Scripts for environment setup and frequently used builds

* Add details for GetAddressDeltas/Mempool RPCs
Update path in Makefile bitcoin-core -> dash-core

* Add GetAddressTxids/Utxos details
Update minor formatting, etc. for GetAddressBalance/Deltas/Mempool
Changed reference to Dash Core and updated denominations for Dash

* Misc minor cleanup

* Work on updating existing Block Chain RPCs
 - GetBestBlockHash, GetBlock, GetBlockChainInfo, GetBlockCount,
GetBlockHash

* Continue updating existing Block Chain RPCs
 - GetBlockHeader, GetChainTips, GetDifficulty, GetMemPoolInfo,
GetRawMemPool

* Update RPCs quick-ref
 - Added descriptions for Dash
 - Updated description for Bitcoin related items for clarity

* Comment out content of non-implemented Block chain RPCs (GetMemPoolAncestors, GetMemPoolDescendants, GetMemPoolEntry, PreciousBlock, PruneBlockChain)

* Continue updating existing Block Chain RPCs
 - GetTxOut, GetTxOutProof, GetTxOutSetInfo, VerifyChain,
VerifyTxOutProof
Update previous block hash type to indicate X11 instead of double SHA256

* Add script to create basic RPC md file
Set up empty GetBlockHashes/Headers and GetSpentInfo RPCs

* Add GetBlockhashes details
Minor correction in Empty RPC generation script

* Add GetBlockHeaders details
Minor formatting updates

* Update Address Index related RPCs to indicate the necessity of enabling addressindex to use them

* Actual details of GetBlockHeaders

* Add details for GetSpentInfo

* Update existing Control RPCs (GetInfo, Help, Stop)

* Add Debug RPC

* Expand empty RPC generation script to add example section and fix format

* Added empty RPC files and cross-ref details for all Dash RPCs

* Add details for some Dash RPCs
- GetGovernanceInfo, GetPoolInfo, GetSuperblockBudget

* Add details for MasternodeList RPC (Dash section)

* Add details for MnSync RPC (Dash section)

* Dash RPC updates
 - Add Result section to MasternodeList
 - Formatting updates to MnSync

* Expand script to add placeholders for parameters/resuls/example

* Add details for PrivateSend RPC (Dash section)

* Update Generating RPCs
 - Added details back for GetGenerate/SetGenerate which were deprecated
in Bitcoin

* Formatting and example updates

* Add result detail and example to GetBlockTemplate

* Update existing Mining RPCs
 - GetMiningInfo, GetNetworkHashPs, PrioritiseTransaction, SubmitBlock

* Minor formatting updates

* Update most existing Network RPCs
 - AddNode, ClearBanned, DisconnectNode, GetAddedNodeInfo,
GetConnectionCount, GetNetTotals,GetNetworkInfo, GetPeerInfo,
ListBanned, Ping, SetBan
 - Added some norefs as needed (Network RPCs only)

* Misc cleanup

* SetNetworkActive (Network RPC)

* Misc updates
 - Change logo
 - Disable some headers (alert, donation)
 - Disable footer

* Governance updates
 - Add description of govsync to P2P guide
 - Updates to P2P reference

* Governance
 - Add governance message SVG image
 - Typo fixes

* Dseg updates
 - Added clarifying details regarding how to request single/all nodes
 - Ban warning

* Minor governance updates

* Governance updates / MN sync
 - Correct some reference links
 - Add MN sync info to guide
 - Update dseg, mnget, ssc, and govsync messages to include more detail

* Governance updates
 - Guide updated to show both stages of govsync
 - Reference
  - Correcte ssc typo and add sync item detail
  - Update govobjvote to include detail about propagation
  - Update govsync details

* Governance updates
 - More clarification on govsync (guide and reference)

* Raw Transaction RPC
 - Previously uncommitted CreateRawTransaction update

* Dash RPC (Gobject)
 - Add details for count and get sub-commands

Also added description for govobj types

* P2P messages
 - Spork updated to include verification details and a hexdump

Minor typo / note updates

* P2P Message - mnv
 - Draft details regarding use and operation

* P2P message (mnv)
 - Additional detail updates based on info from Udjin

Minor update to mnp

* Guide - Masternode payment
 - Add section and start putting in details

* P2P Messages - deprecated
 - Move deprecated messages to their own group

* Misc minor non-content updates
2017-10-25 09:17:55 -04:00

131 lines
4.9 KiB
Ruby

# This file is licensed under the MIT License (MIT) available on
# http://opensource.org/licenses/MIT.
require 'yaml'
module Jekyll
class GlossaryPage < Page
def initialize(site, base, lang, srcdir, src, output_directory)
@site = site
@base = base
@dir = '/' + output_directory
## Output file is the source file base name plus .md for Markdown
## (converted later to HTML)
output_file = src.split('.')[0] + ".md"
## Read in the file's YAML header
self.read_yaml(File.join(base, srcdir), src)
## Pass in the full path to enable edit-on-github links
self.data["filename"] = srcdir + '/' + src
## Page Title: <title> - Dash Glossary
self.data["title"] = self.data["required"]["title_max_40_characters_no_formatting"] + " - Dash Glossary"
## Output file is v<version>.md (converted later to HTML)
@name = output_file
self.process(output_file)
## Output full path
output_full_path = dir + "/" + output_file.gsub('.md', '')
self.data['layout'] = 'glossary_entry'
self.data['category'] = 'glossary_entry'
## Combine required (displayed) and optional (non-displayed)
## synonyms into an array
if self.data["optional"]["synonyms_and_pluralizations_not_shown_in_glossary"].nil?
mixed_case_terms = self.data["required"]["synonyms_shown_in_glossary_capitalize_first_letter"]
else
mixed_case_terms = self.data["required"]["synonyms_shown_in_glossary_capitalize_first_letter"] +\
self.data["optional"]["synonyms_and_pluralizations_not_shown_in_glossary"]
end
## Downcase all terms so we can easily detect when we create
## duplicated autocrossreference links
terms = Array.new
mixed_case_terms.each { |term|
terms.push(term.downcase)
}
## Add all synonyms to the autocrossref hash table for automatic linking
site.config["crossref"] = site.config["crossref"] ? site.config["crossref"] : {}
for term in terms do
site.config["crossref"].merge!({ term => output_full_path }) {
|key, old_value, new_value|
if old_value != new_value
abort("Error: autocrossref key '#{key}' wants to point to both '#{old_value}' and '#{new_value}'")
end
new_value
}
end
## Create a newline-containing Markdown-formatted string that
## includes links for all of our autocrossref-created synonyms.
## TODO: this should probably be done as an `include`-able
## template for proper division between the logic and
## presentation layers
site.config["glossary_links"] = site.config["glossary_links"] ? site.config["glossary_links"] : ''
site.config["glossary_links"] \
+= "[" \
+ output_full_path \
+ "]: " \
+ output_full_path \
+ ' "' \
+ self.data["required"]["summary_max_255_characters_no_formatting"].chomp() \
+ '"' \
+ "\n"
## Add only shown synonyms to the glossary hash-tables-inside-sorted-array
## for use in the search box and on the master listing page
site.config["devsearches"]["Glossary"] = site.config["devsearches"]["Glossary"] ? site.config["devsearches"]["Glossary"] : []
for term in self.data["required"]["synonyms_shown_in_glossary_capitalize_first_letter"] do
site.config["devsearches"]["Glossary"].unshift({ term => output_full_path })
end
## Sort the shown synonyms array alphabetically (case
## insensitive). We have to do this here because the version of
## Jekyll/Liquid we use does not provide the ability to sort
## arrays when the template is compiled. Higher version of Jekyll
## do support this feature, so if we upgrade to Jekyll 2.2 or
## higher, look at doing this at template time to save CPU cycles
## and increase flexibility
site.config["devsearches"]["Glossary"].sort_by!{|hash|
hash.to_s.downcase.gsub(/"=>.*/,'')
}
end
end
class GlossaryPageGenerator < Generator
def generate(site)
#Do nothing if plugin is disabled
if !ENV['ENABLED_PLUGINS'].nil? and ENV['ENABLED_PLUGINS'].index('glossary').nil?
print 'Glossary disabled' + "\n"
return
end
glossary_dir='_data/glossary/en'
#Generate each definition page based on templates
Dir.foreach(glossary_dir) do |file|
next if file == '.' or file == '..'
lang = 'en'
src = file
srcdir = '_data/glossary/en'
output_directory = lang + '/glossary/'
site.pages << GlossaryPage.new(site, site.source, lang, glossary_dir, src, output_directory)
end
#TODO definition pages are only generated for English language,
#but they could also be translated at some point. They would however
#need to fallback to English when no translation is available.
end
end
end