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