diff options
Diffstat (limited to 'src/ext_depends/D-YAML/examples/yaml_stats/yaml_stats.d')
-rw-r--r-- | src/ext_depends/D-YAML/examples/yaml_stats/yaml_stats.d | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/src/ext_depends/D-YAML/examples/yaml_stats/yaml_stats.d b/src/ext_depends/D-YAML/examples/yaml_stats/yaml_stats.d deleted file mode 100644 index b3f6c17..0000000 --- a/src/ext_depends/D-YAML/examples/yaml_stats/yaml_stats.d +++ /dev/null @@ -1,106 +0,0 @@ - -///Example D:YAML application that displays statistics about YAML documents. - -import std.stdio; -import std.string; -import dyaml; - - -///Collects statistics about a YAML document and returns them as string. -string statistics(ref Node document) -{ - size_t nodes; - size_t scalars, sequences, mappings; - size_t seqItems, mapPairs; - - size_t[string] tags; - - void crawl(ref Node root) - { - ++nodes; - if((root.tag in tags) is null) - { - tags[root.tag] = 0; - } - ++tags[root.tag]; - final switch (root.nodeID) - { - case NodeID.scalar: - ++scalars; - return; - case NodeID.sequence: - ++sequences; - seqItems += root.length; - foreach(ref Node node; root) - { - crawl(node); - } - return; - case NodeID.mapping: - ++mappings; - mapPairs += root.length; - foreach(ref Node key, ref Node value; root) - { - crawl(key); - crawl(value); - } - return; - case NodeID.invalid: - assert(0); - } - } - - crawl(document); - - string tagStats = "\nTag statistics:\n"; - foreach(tag, count; tags) - { - tagStats ~= format("\n%s : %s", tag, count); - } - - return format( "\nNodes: %s" ~ - "\n\nScalars: %s" ~ - "\nSequences: %s" ~ - "\nMappings: %s" ~ - "\n\nAverage sequence length: %s" ~ - "\nAverage mapping length: %s" ~ - "\n\n%s", - nodes, scalars, sequences, mappings, - sequences == 0.0 ? 0.0 : cast(real)seqItems / sequences, - mappings == 0.0 ? 0.0 : cast(real)mapPairs / mappings, - tagStats); -} - -void main(string[] args) -{ - //Help message - if(args.length == 1) - { - writeln("Usage: yaml_stats [YAML_FILE ...]\n"); - writeln("Analyzes YAML files with provided filenames and displays statistics."); - return; - } - - //Print stats about every document in every file. - foreach(file; args[1 .. $]) - { - writeln("\nFile ", file); - writeln("------------------------------------------------------------"); - try - { - auto loader = Loader.fromFile(file); - - size_t idx = 0; - foreach(ref document; loader) - { - writeln("\nDocument ", idx++); - writeln("----------------------------------------"); - writeln(statistics(document)); - } - } - catch(YAMLException e) - { - writeln("ERROR: ", e.msg); - } - } -} |