1befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# Copyright (C) 2017 The Android Open Source Project
2befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian#
3befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# Licensed under the Apache License, Version 2.0 (the "License");
4befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# you may not use this file except in compliance with the License.
5befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# You may obtain a copy of the License at
6befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian#
7befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian#      http://www.apache.org/licenses/LICENSE-2.0
8befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian#
9befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# Unless required by applicable law or agreed to in writing, software
10befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# distributed under the License is distributed on an "AS IS" BASIS,
11befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# See the License for the specific language governing permissions and
13befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian# limitations under the License.
14befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian
15befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian'''Utility functions for crypto doc updating tools.'''
16befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian
17befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanianimport json
18befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian
19befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian
20befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartaniandef load_json(filename):
21befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    '''Returns an object containing the JSON data from the provided file.'''
22befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    f = open(filename)
23befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    # JSON doesn't allow comments, but we have some header docs in our file,
24befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    # so strip comments out before parsing
25befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    stripped_contents = ''
26befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    for line in f:
27befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian        if not line.strip().startswith('#'):
28befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian            stripped_contents += line
29befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    data = json.loads(stripped_contents)
30befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    f.close()
31befc86a711b876ed6523fbe453dfa7a9adb345afAdam Vartanian    return data
3222051136d1344e34c05659420bc49372040bd75eAdam Vartanian
3322051136d1344e34c05659420bc49372040bd75eAdam Vartanian
3422051136d1344e34c05659420bc49372040bd75eAdam Vartaniandef find_by_name(seq, name):
3522051136d1344e34c05659420bc49372040bd75eAdam Vartanian    """Returns the first element in seq with the given name."""
3622051136d1344e34c05659420bc49372040bd75eAdam Vartanian    for item in seq:
3722051136d1344e34c05659420bc49372040bd75eAdam Vartanian        if item['name'] == name:
3822051136d1344e34c05659420bc49372040bd75eAdam Vartanian            return item
3922051136d1344e34c05659420bc49372040bd75eAdam Vartanian    return None
40