59 lines
1.8 KiB
Ruby
59 lines
1.8 KiB
Ruby
|
# Utility functionality for all of Sapling to reference
|
||
|
|
||
|
# Constants
|
||
|
|
||
|
# A series of constants for handing a brand new tree. The skeleton tree provides
|
||
|
# a very basic introduction to Sapling. More details can be found in the
|
||
|
# documentation.
|
||
|
|
||
|
# The default trunk text of a new tree
|
||
|
SKELE_TRUNK_TEXT = "Welcome to the Sapling Editor. For details, please see the
|
||
|
documentation!"
|
||
|
|
||
|
# The default first-branch text of a new tree
|
||
|
SKELE_BRANCH_TEXT = "The first branch is always shown by default. It should act
|
||
|
as the introduction to the story. From here, the user enters your world!"
|
||
|
|
||
|
# The default first-leaf text of the first branch of a new tree. The leaf points
|
||
|
# to it's own branch. The only way out of the program is to either force-quit or
|
||
|
# reply with option 0.
|
||
|
SKELE_LEAF_TEXT = "Each branch can have any number of leaves, which represent
|
||
|
the options a user has on that branch. Each leaf points to another branch, or
|
||
|
can point to branch 0 to immediately exit."
|
||
|
|
||
|
# The final tree
|
||
|
SKELETON_TREE = [
|
||
|
{"trunk" => "#{SKELE_TRUNK_TEXT}"},
|
||
|
{"branch" => {
|
||
|
"number" => 1,
|
||
|
"text" => "#{SKELE_BRANCH_TEXT}",
|
||
|
"leaf" => [{
|
||
|
"text" => "#{SKELE_LEAF_TEXT}",
|
||
|
"branch" => 1
|
||
|
}]
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
|
||
|
|
||
|
# Verify that a file is a dialogue tree file.
|
||
|
#
|
||
|
# @param file [File] The provided file
|
||
|
# @return [Boolean] True if the file is a tree; false otherwise
|
||
|
def verify_tree(file)
|
||
|
results = []
|
||
|
begin
|
||
|
tree = YAML.load_file(file)
|
||
|
results << tree[0].keys.include?("trunk")
|
||
|
results << tree[1]["branch"].keys.include?("number")
|
||
|
results << tree[1]["branch"].keys.include?("text")
|
||
|
results << tree[1]["branch"].keys.include?("leaf")
|
||
|
rescue
|
||
|
puts "Sorry chummer, I don't think this is a tree."
|
||
|
puts "Verify your YAML file is formatted properly."
|
||
|
results << false
|
||
|
end
|
||
|
|
||
|
results.include?(false) ? false : true
|
||
|
end
|