summaryrefslogtreecommitdiff
path: root/docs/examples/xml/phonebook/phonebook.scala
blob: 4813c2d20d5d6fa5f432b179500aaf53d051b396 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package phonebook ;

object phonebook {

  val labPhoneBook =
    <phonebook>
      <descr>
        This is the <b>phonebook</b> of the
        <a href="http://acme.org">ACME</a> corporation.
      </descr>
      <entry>
        <name>Burak</name>
        <phone where="work">  +41 21 693 68 67</phone>
        <phone where="mobile">+41 79 602 23 23</phone>
      </entry>
    </phonebook>;

  Console.println( labPhoneBook );

  // XML is immutable - adding an element

  import scala.xml.{ Node, Text };

  def add( phonebook:Node, newEntry:Node ):Node = phonebook match {
    case <phonebook>{ ch @ _* }</phonebook> =>
            <phonebook>{ ch }{ newEntry }</phonebook>
  }

  val pb2 =
    add( labPhoneBook,
         <entry>
           <name>Kim</name>
           <phone where="work">  +41 21 111 11 11</phone>
         </entry> );

  def main(args:Array[String]) = Console.println( pb2 );

}