Showing the changes to examples/gen_example_code.sh (1 of 724 files). Show all
Unified · Split
| @@ -0,0 +1,84 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +## | |
| 3 | +## Copyright (c) 2010 The VP8 project authors. All Rights Reserved. | |
| 4 | +## | |
| 5 | +## Use of this source code is governed by a BSD-style license and patent | |
| 6 | +## grant that can be found in the LICENSE file in the root of the source | |
| 7 | +## tree. All contributing project authors may be found in the AUTHORS | |
| 8 | +## file in the root of the source tree. | |
| 9 | +## | |
| 10 | + | |
| 11 | + | |
| 12 | +# gen_example_code.sh | |
| 13 | + | |
| 14 | +self=$0 | |
| 15 | + | |
| 16 | +die_usage() { | |
| 17 | + echo "Usage: $self <example.txt>" | |
| 18 | + exit 1 | |
| 19 | +} | |
| 20 | + | |
| 21 | +die() { | |
| 22 | + echo "$@" | |
| 23 | + exit 1 | |
| 24 | +} | |
| 25 | + | |
| 26 | +include_block() { | |
| 27 | + show_bar=$1 | |
| 28 | + block_name=${line##*@} | |
| 29 | + indent=${line%%${block_name}} | |
| 30 | + indent=${#indent} | |
| 31 | + [ $indent -eq 1 ] && indent=0 | |
| 32 | + local on_block | |
| 33 | + while IFS=$'\n' read -r t_line; do | |
| 34 | + case "$t_line" in | |
| 35 | + \~*\ ${block_name}) | |
| 36 | + if [ "x$on_block" == "xyes" ]; then | |
| 37 | + return 0; | |
| 38 | + else | |
| 39 | + on_block=yes | |
| 40 | + fi | |
| 41 | + ;; | |
| 42 | + @DEFAULT) | |
| 43 | + if [ "x$on_block" == "xyes" ]; then | |
| 44 | + include_block $show_bar < "${template%.c}.txt" | |
| 45 | + return 0 | |
| 46 | + fi | |
| 47 | + ;; | |
| 48 | + *) | |
| 49 | + if [ "x$on_block" == "xyes" ]; then | |
| 50 | + local rem | |
| 51 | + (( rem = 78 - indent )) | |
| 52 | + case "$block_name" in | |
| 53 | + \**) printf "%${indent}s * %s\n" "" "$t_line" ;; | |
| 54 | + *) | |
| 55 | + if [ "$show_bar" == "yes" ]; then | |
| 56 | + printf "%${indent}s%-${rem}s//\n" "" "$t_line" | |
| 57 | + else | |
| 58 | + printf "%${indent}s%s\n" "" "$t_line" | |
| 59 | + fi | |
| 60 | + ;; | |
| 61 | + esac | |
| 62 | + fi | |
| 63 | + esac | |
| 64 | + done | |
| 65 | + return 1 | |
| 66 | +} | |
| 67 | + | |
| 68 | +txt=$1 | |
| 69 | +[ -f "$txt" ] || die_usage | |
| 70 | +read -r template < "$txt" | |
| 71 | +case "$template" in | |
| 72 | + @TEMPLATE*) template=${txt%/*}/${template##@TEMPLATE } ;; | |
| 73 | + *) die "Failed to parse template name from '$template'" ;; | |
| 74 | +esac | |
| 75 | + | |
| 76 | +while IFS=$'\n' read -r line; do | |
| 77 | + case "$line" in | |
| 78 | + @*) include_block yes < "$txt" \ | |
| 79 | + || include_block < "${template%.c}.txt" \ | |
| 80 | + #|| echo "WARNING: failed to find text for block $block_name" >&2 | |
| 81 | + ;; | |
| 82 | + *) echo "$line" ;; | |
| 83 | + esac | |
| 84 | +done < "$template" | |