blob: 3ae37b36f940bf8db8ad1e304971c8cbe45ab0d9 [file] [log] [blame]
#
# Copyright (c) 2012,2013 Big Switch Networks, Inc.
#
# Licensed under the Eclipse Public License, Version 1.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.eclipse.org/legal/epl-v10.html
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied. See the License for the specific language governing
# permissions and limitations under the License.
#
import os
#
# doc, interface to manage 'markdown' text segments based on
# documentation tag's.
#
doc = {}
def register_doc(tag, path):
"""
Its not clear whether the registratio api ought to only name
the available tags, or whether the api ought to also associate
text, but it seems that it would be wiser to not keep all the
documentation in memory
"""
doc[tag] = path
def add_doc_tags(base, tag_prefix = None):
path = base
if tag_prefix == None:
tag_prefix = []
elif type(tag_prefix) == str:
tag_prefix = [tag_prefix]
if os.path.exists(path):
for elem in os.listdir(path):
this_tag_prefix = list(tag_prefix)
this_tag_prefix.append(elem)
full_path = os.path.join(path, elem)
if os.path.isdir(full_path):
add_doc_tags(full_path, this_tag_prefix)
elif os.path.isfile(full_path):
register_doc('|'.join(this_tag_prefix), full_path)
else:
print 'add_doc_tags: unknown file type for ', full_path
def get_text(context, tag):
path = doc.get(tag)
if path:
if os.path.exists(path):
with open(path, 'r') as f:
return f.read()
else:
if context.sdnsh.description:
print 'doc: tag %s: missing ' % tag
return ''