@@ -4,13 +4,25 @@ mutable struct DisplayParameters
4
4
sigfigs:: Int
5
5
end
6
6
7
+ function Base. show (io:: IO , params:: DisplayParameters )
8
+ println (io, " Display parameters:" )
9
+ println (io, " - format: $(params. format) " )
10
+ println (io, " - decorations: $(params. decorations) " )
11
+ print (io, " - significant figures: $(params. sigfigs) " )
12
+ end
13
+
7
14
const display_params = DisplayParameters (:standard , false , 6 )
8
15
16
+ const display_options = (:standard , :full , :midpoint )
9
17
10
18
"""
11
- setformat(;kw)
19
+ setformat(format=none; decorations=none, sigfigs=none)
20
+
21
+ `setformat` changes how intervals are displayed.
22
+ It returns the new `DisplayParameters` object.
23
+
24
+ Note that The `@format` macro is more user-friendly.
12
25
13
- `setformat` changes how intervals are displayed using keyword arguments.
14
26
The following options are available:
15
27
16
28
- `format`: interval output format
@@ -26,34 +38,52 @@ The following options are available:
26
38
Example:
27
39
```
28
40
julia> setformat(:full, decorations=true)
41
+ Display parameters:
42
+ - format: full
43
+ - decorations: true
44
+ - significant figures: 6
29
45
```
30
46
"""
31
- function setformat (format = display_params. format;
32
- decorations = display_params. decorations, sigfigs:: Integer = display_params. sigfigs)
47
+ function setformat (format = nothing ;
48
+ decorations = nothing ,
49
+ sigfigs = nothing )
50
+
33
51
34
- if format ∉ (:standard , :full , :midpoint )
35
- throw (ArgumentError (" Allowed format option is one of $display_options ." ))
52
+ if format != nothing
53
+ if format ∉ display_options
54
+ throw (ArgumentError (" Allowed format option is one of $display_options ." ))
55
+ else
56
+ display_params. format = format
57
+ end
36
58
end
37
59
38
- if decorations ∉ (true , false )
39
- throw (ArgumentError (" `decorations` must be `true` or `false`" ))
60
+ if decorations != nothing
61
+ if decorations ∉ (true , false )
62
+ throw (ArgumentError (" `decorations` must be `true` or `false`" ))
63
+ end
64
+
65
+ display_params. decorations = decorations
66
+
40
67
end
41
68
42
- if sigfigs < 1
43
- throw (ArgumentError (" `sigfigs` must be `>= 1`" ))
69
+ if sigfigs != nothing
70
+ if sigfigs < 1
71
+ throw (ArgumentError (" `sigfigs` must be `>= 1`" ))
72
+ end
73
+
74
+ display_params. sigfigs = sigfigs
75
+
44
76
end
45
77
46
- # update values in display_params:
47
- display_params. format = format
48
- display_params. decorations = decorations
49
- display_params. sigfigs = sigfigs
78
+ return display_params
50
79
end
51
80
52
81
"""
53
82
@format [style::Symbol] [decorations::Bool] [sigfigs::Integer]
54
83
55
84
The `@format` macro provides a simple interface to control the output format
56
85
for intervals. These options are passed to the `setformat` function.
86
+ It returns the new `DisplayParameters` object.
57
87
58
88
The arguments may be in any order and of type:
59
89
@@ -67,11 +97,19 @@ julia> x = 0.1..0.3
67
97
@[0.0999999, 0.300001]
68
98
69
99
julia> @format full
100
+ Display parameters:
101
+ - format: full
102
+ - decorations: false
103
+ - significant figures: 6
70
104
71
105
julia> x
72
106
Interval(0.09999999999999999, 0.30000000000000004)
73
107
74
108
julia> @format standard 3
109
+ Display parameters:
110
+ - format: standard
111
+ - decorations: false
112
+ - significant figures: 3
75
113
76
114
julia> x
77
115
[0.0999, 0.301]
@@ -88,12 +126,13 @@ macro format(expr...)
88
126
if isa (ex, Symbol)
89
127
format = Meta. quot (ex)
90
128
91
- elseif isa (ex, Integer)
92
- sigfigs = ex
93
-
94
129
elseif isa (ex, Bool)
95
130
decorations = ex
131
+
132
+ elseif isa (ex, Integer)
133
+ sigfigs = ex
96
134
end
135
+
97
136
end
98
137
99
138
format_code = :(setformat ($ format, decorations= $ decorations, sigfigs= $ sigfigs))
0 commit comments