Guest User

Untitled

a guest
Dec 10th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. package org.grails.prettysize
  2.  
  3. import java.text.NumberFormat
  4. import java.text.DecimalFormat
  5.  
  6. class PrettySizeTagLib {
  7.  
  8. static namespace = "prettysize"
  9.  
  10. static final def BYTE = 1D
  11. static final def KILO_BYTE = 1024D
  12. static final def MEGA_BYTE = 1048576D
  13. static final def GIGA_BYTE = 1073741824D
  14. static final def TERA_BYTE = 1099511627776D
  15. static final def PETA_BYTE = 1125899906842624D
  16. static final def EXA_BYTE = 1152921504606846976D
  17. static final def ZETTA_BYTE = 1180591620717411303424D
  18. static final def YOTTA_BYTE = 1208925819614629174706176D
  19.  
  20. def display = {attrs ->
  21. def size = attrs.remove('size') as double
  22. def abbr = Boolean.valueOf(attrs.remove('abbr'))
  23. def formatter = attrs.remove('format')
  24. if (formatter) formatter = new DecimalFormat(formatter)
  25.  
  26. if (!size || size < 0) {
  27. outMsg('prettysize.byte', 0, abbr, formatter)
  28. } else if (size >= YOTTA_BYTE) {
  29. outMsg('prettysize.yotta.byte', size.div(YOTTA_BYTE), abbr, formatter)
  30. } else if (size >= ZETTA_BYTE) {
  31. outMsg('prettysize.zetta.byte', size.div(ZETTA_BYTE), abbr, formatter)
  32. } else if (size >= EXA_BYTE) {
  33. outMsg('prettysize.exa.byte', size.div(EXA_BYTE), abbr, formatter)
  34. } else if (size >= PETA_BYTE) {
  35. outMsg('prettysize.peta.byte', size.div(PETA_BYTE), abbr, formatter)
  36. } else if (size >= TERA_BYTE) {
  37. outMsg('prettysize.tera.byte', size.div(TERA_BYTE), abbr, formatter)
  38. } else if (size >= GIGA_BYTE) {
  39. outMsg('prettysize.giga.byte', size.div(GIGA_BYTE), abbr, formatter)
  40. } else if (size >= MEGA_BYTE) {
  41. outMsg('prettysize.mega.byte', size.div(MEGA_BYTE), abbr, formatter)
  42. } else if (size >= KILO_BYTE) {
  43. outMsg('prettysize.kilo.byte', size.div(KILO_BYTE), abbr, formatter)
  44. } else {
  45. outMsg('prettysize.byte', size, abbr, formatter)
  46. }
  47. }
  48.  
  49. def outMsg(code, units, abbr, formatter) {
  50. if (units <= 0) {
  51. out << message(code: 'prettysize.none')
  52. } else {
  53. def sb = new StringBuilder(code)
  54. if (units > 1) sb << 's'
  55. if (abbr) sb << '.short'
  56. if (formatter) units = formatter.format(units)
  57. out << message(code: sb.toString(), args: [units])
  58. }
  59. }
  60.  
  61. }
Add Comment
Please, Sign In to add comment